제 작품에서 우리는 대략 1-2 초 정도의 최대 대기 시간을 갖는 제어 어플리케이션을위한 시스템 아키텍처를 최근 마쳤습니다. IP LAN을 통해 통신하는 소형 ARM 온칩 박스에 분산되어 있습니다.~ 1s 대기 시간 제어 앱 : Java에 적합합니까?
우리는 고전적인 제어 시스템 언어이기 때문에 처음에는 C 또는 C++을 사용할 것으로 예상했습니다. 응용 프로그램을 구현하는 방법을 논의한 후에 C++에는 매우 제한된 양의 라이브러리가 있고 인트로 스펙이 없으며 개발 속도를 늦출 수있는 몇 가지 속성이 있음을 알았습니다. 제 동료는 Java가 그 일에 도움이 될 것이라고 제안했습니다.
컨트롤 앱의 GC 실행 지연에 대해 무서워하고 RAII를 삭제하기를 꺼려합니다. 앱에서 많은 외부 리소스 (소켓, 파일 핸들, 외부 libs 등).
다음과 같이 프로/사기꾼 목록 현재 :
병렬 GC와 메모리 단편화는 GC의 대기 시간이 문제가 아니었고 경우 in this AMD article내가 자바를 사용 싶어요 언급
C++
+ RAII - Easy resource management - it will be a complex system
+ System language - speed if we cant't find a JIT VM for our ARM
+ No GC - no big worst case latencies from the GC
+ Easy to integrate with some shared mem libs that we have to interface with
- Fewer free as in beer libs
- Lacks introspection - Mapping classes to DB and external data formats (XML)
would benefit from this (ORM /JAXB) approach
- Easy to shoot one self in the foot - hard and expensive to find programmers
which don't make big mistakes
- Memory fragmentation - needs tuning and workarounds
Java
+ Huge amount of libs
+ Introspection - serialization becomes a breeze (see C++ section)
+ Easier to find 'good enough' programmers
- No RAII - Client has to remember finally or you leak
resources. IMO Java programmers tend to ignore this
problem unless they have server app background.
- No System Language - possibly slower although ARMj could alleviate this
- GC - latency might go up (don't know if parallel GC will work - seems that
you might get fragmentation, see note below).
- Need to write JNI for the shared mem libs that we interface with
- Maybe ORACLE will eat us
우리 RAII를 얻을 수 있습니다. 따라서나는 RAII를 가지고 있고 좋은 대안으로 사용될 수있는 다른 언어를 조사해 왔으며 지금까지 D, Ada, VB, Perl, Python (C), PHP, tcl 및 Lua가 일종의 범위를 벗어난 콜백. 아마도 D, Python 및 ADA가 제어 앱에 적합 할 수 있다고 생각합니다. D와 ADA를 가장 좋아합니다.
내 질문은 : 이것에 대한 권장 사항이 있습니까? Java는 실행 가능한 옵션입니까? 언어를 선택할 수 있다면 무엇입니까?
@disown : GC가 유일한 부제가 아닙니다. JIT가 시작되면 지연 시간 스파이크가 발생할 수도 있습니다 (Google I/O 2010에서 볼 수 있습니다. btw에서는 새로운 Android JIT 기기가 처음에는 JIT 이외의 기기보다 속도가 느린 속도로 실행됩니다). 나는 당신이 http://javolution.org에 흥미가 있을지도 모른다라고 생각한다. – SyntaxT3rr0r
@Webinator : 링크를 주셔서 감사합니다 ... –