2011-01-24 3 views
3

제 경험으로 볼 때 데스크탑 플랫폼의 대부분의 Java 응용 프로그램은 C++ 또는 다른 기본 컴파일 언어로 작성된 유사한 응용 프로그램보다 응답이 적습니다. Java가 중간 언어로만 컴파일된다는 것을 고려하면 이해할 수 있습니다.Java 응용 프로그램이 네이티브 대체물처럼 반응 할 수 있습니까?

여기 응답 성은 응용 프로그램이 마우스 클릭 및 키보드 이벤트에 응답하는 방식에 대한 일반적인 느낌을 말합니다. 사용자가 어딘가를 클릭하는 것과 프로그램에서 실제로 클릭하여 해당 클릭에 대한 응답을 나타내는 프로그램을 다시 그리는 사이에 약간 뒤떨어져 있습니다. 대부분 이러한 지연은 너무 작아 지연으로 볼 수는 없지만 전체 적용이 조금 느려지는 느낌을받습니다.

응답 성이 떨어지는 것으로 보이는 Java 응용 프로그램의 예로 Azureus, Zend 스튜디오, Eclipse 및 몇 가지 자체 Swing 기반 Java 프로젝트의 Java 기반 버전이 있습니다.

정말입니까? 자바 애플리케이션이 네이티브 애플리케이션만큼 반응적일 수 있습니까? 아마도 다른 방식으로 컴파일해야할까요? (가능한 경우 젠드 스튜디오와 같은 큰 제품이 이미 그렇게했다고 생각할지라도)

+0

이것은 언어보다 그래픽 프레임 워크와 더 관련이 있습니다. 나는 스윙이 느리다 고 생각한다. – Falmarri

+0

@Falmarri : Eclipse와 Azureus는 Swing이 아니라 SWT로 작성되었습니다. – Powerlord

+0

Eclipse의 인터페이스가 내 요구에 충분히 반응 할 수 있습니다. 그게 나야. – MattC

답변

1

자바의 애플리케이션 반응성은 프로그래밍이 좋지 않거나 비효율적 인 경우가 많습니다. Java UI는 C/C++로 작성된 것보다 무겁지만 최근 컴퓨터 (지난 몇 년 정도)에서는 잘 코딩 된 응용 프로그램을 사용하여 고민해서는 안됩니다.

가장 최근의 벤치 마크에서는 Java 1.6이 C/C++과 비교 된 속도임을 보여주었습니다. (필자는 마지막 크로스 언어 벤치 마크에서 성능면에서 두 모델 사이에 잘 ​​어울리는 것을 보았습니다.)

자바의 증상과 IDE 사람들이 쓰는 데 사용하는 것은 그것이 C++이 넘어지는 동안 너무 많이 불평하지 않고 잘못된 방식 (읽지 마세요, 덜 좋은 방법)을 할 수있게 해주는 용인 언어라는 것입니다. 더 나은 소프트웨어 작성을 강요합니다.

devs가 UI의 모든 요소에 하나의 수신기를 연결 한 Java 응용 프로그램을 본 적이 있는데, 그 청취자는 엄청난 if ... elseif ... elseif ... 이벤트 객체에서 다시 전달 된 툴팁 문자열입니다.

1

javac는 중간 바이트 코드로 컴파일됩니다. 그러나 JVM은 코드가 동적으로 사용되는 방식 (정적 컴파일러가 수행 할 수없는 방식)에 따라 원시 코드로 컴파일됩니다. GUI의 경우 실제 작업의 대부분은 원시 코드 구성 요소에서 수행되므로 실제 차이점을 보지 않아야합니다.

많은 실시간 거래 시스템이 Java를 사용하여 개발되고 100 마이크로 초 미만으로 응답합니다. 즉 0.0001 초이다. 응답 성 문제가있는 경우 언어가 잘못되었습니다.

BTW : Eclipse는 기본 라이브러리 인 SWT를 사용합니다.

+0

AWT는 기본 구성 요소를 기반으로합니다. 스윙은 그렇지 않습니다. 고유 한 구성 요소가 응용 프로그램에 필요한 위젯을 찾지 못했기 때문에 구성 요소에 대해 자체 그래픽을 사용합니다. – Cratylus

+0

순수 자바 스윙 응용 프로그램 인 IntelliJ를 사용하고 GUI 작업으로 인해 응답 성 문제가 표시되지 않습니다. 디스크 용) 나는 유스 케이스와 사용하는 라이브러리에 크게 의존한다고 생각하지만 언어는 그렇지 않다. –

관련 문제