JVM과 Java의 WORA는 다른 고급 언어와 어떻게 다릅니 까?


12

자바 세계에서 우리는 종종 JVM에 대해 이야기하고, 자바가 새로워 졌을 때 "Write Once, Run Anywhere"라는 킬러 기능을 가지고있었습니다.

사람들이 이야기하고 쓰는 방식에서 이것은 파이썬과 같은 방식과 다릅니다. 그러나 필자가 작성한 Python 코드가 다른 컴퓨터에서 다르게 작동하는 방식을 알지 못했습니다. (나는 그렇게 많은 파이썬을 작성하지는 않았지만)

그래서 내가 무엇을 놓치고 있습니까? JVM이 파이썬 인터프리터와 어떻게 다른가요? 파이썬에 Java 플랫폼 독립성이없는 방법이 있습니까? 아니면 이것이 문화적 차이일까요?


1
주요 차이점은 JVM 사양의 엄격 성입니다. 그것은 어떻게 행동해야 하는가 (잘 정의되어 있지는 않음)에 아주 잘 정의되어 있습니다.

답변:


17

Java는 기본 OS에서 사용자를 격리시키는 데 매우 효과적이며 기본 OS에서 작업하기 위해 작동하는 대부분의 플랫폼에서 동일한 도구를 제공합니다.

반면에 파이썬은 기본 OS에서 당신을 격리시키는 데 큰 도움이되지 않습니다. 프로세스 통신 사이의 표준 처리 방법이 없습니다 (Windows와 * 사이의 sys 모듈과 os 모듈의 차이점을보십시오 * 예를 들어 파이썬의 nix 구현.)

파이썬으로 가능한 API 호출을 사용하여 * NIX 상자 또는 Windows 상자에서만 작동하는 코드를 파이썬으로 작성했습니다 .Java에서는 두 언어에서 동일하게 작동하지 않는 Java API 인 코드를 작성하는 것이 매우 어렵습니다 Windows 상자 또는 * NIX 상자


1
Windows에서만 작동하는 Java 코드를 작성하는 것은 전혀 어렵지 않습니다. 윈도우 파일 경로와 같은 단지 하드 코드 "C : \ MyApp를 \ 데이터"
케빈 클라인

@kevincline 하드 코드 된 경로는 모든 운영 체제에서 나쁜 습관입니다. 그러나 Java는 사용자 디렉토리 또는 현재 프로그램의 설치 경로와 같은 공통 디렉토리를 검색하기 위해 OS 독립적 인 메소드를 제공하므로이를 수행하지 않아도됩니다.
Philipp

3

일반적으로 언어 런타임과는 거의 차이가 없습니다. 특히 JVM은 인터프리터뿐만 아니라 런타임 컴파일러, 코드 유추, 동적 후크를 적용 할 수있는 도구 가상화 계층, 다양한 GC 시맨틱 및 가상화 인체 공학을 기술하는 기능 등을 포함하여 설계되었습니다. 파이썬에서 JVM을 실행할 수 있습니까? Java가 Python 인터프리터에서 실행될 수 있습니까?

대부분의 인터프리터는 런타임 코드 / 토큰 인터프리터, JVM (및 기타)으로, 인터프리터 / 컴파일 / 중간 코드를 알고 있습니다. 예를 들어 IBM은 Java 외부에서 수십 년 동안이 일을 해왔으며 새로운 것은 아닙니다. VB조차도 한동안 중간 코드로 실행했다고 생각합니까?

WORA는 많은 통역 언어가 거의 변하지 않는 곳에서 실행됨에 따라 현재 대부분 통과하고 있습니다.


3

당신이 수, 특히 - 자바는 새로운 때, WORA는 자랑 뭔가를했다 컴파일 한 플랫폼에서 다른 플랫폼에서 그 (컴파일 된 바이트 코드)를 실행합니다.

물론, 인터프리터가 해당 플랫폼에서 사용 가능한 한 인터프리터가 실행되는 플랫폼에 관계없이 인터프리터 언어는 거의 비슷하게 실행됩니다. 그러나 파일 시스템, 권한 문제, 인코딩, 줄 끝 및 수많은 작지만 자극적 인 문제로 인해 두통이 발생할 수 있습니다. 플랫폼에 따라 달라지는 것은 추상화하기가 쉽지 않습니다.


WORA 자체로는 충분하지 않습니다. 정말 중요한 점은 그것이 어디서나 어떻게 실행 되는지 매우 잘 정의 되어있어서 정확히 어디 에서 실행 되었는지 중요하지 않다는 것입니다 .
Thorbjørn Ravn Andersen

1

파이썬에는 플랫폼 독립적 인 GUI가 있습니까?

어쨌든, WORA 기능은 C 프로그래머가 기본 플랫폼을 면밀히 모델링하는 경향이 있고 플랫폼이 다르기 때문에 (단어의 크기? endianess?) 완전히 이식 가능한 C 프로그램을 만드는 데 큰 관심과주의가 필요했습니다.

Java 약속은 플랫폼이 매우 잘 정의되어 있고 문자가 16 비트 등이라는 것을 알고 있기 때문에이 지루함을 모두 수행 할 필요는 없다는 것입니다. 또한 GUI는 Java로 작성되었으며 100 % 이식 가능합니다. 들어 본 적이없는 컴퓨터에서 프로그램을 실행할 수 있으며 심지어 제대로 실행됩니다.


6
파이썬은 여러 플랫폼 독립적 인 GUI 대안을 가지고 : docs.python.org/faq/...
투입 Joonas Pulakka

Java GUI는 다양한 플랫폼에서 올바르게 표시되지 않는 것으로 유명하므로 해당 측면을 정확하게 자랑하지는 않습니다. 그러나 나는 당신의 진술의 나머지 부분에 동의합니다.
rage

-4

Java는 WORA 가 아닙니다 . Java가 버전 번호 에서 더 높은 버전으로 업그레이드 된 후 끊어진 Java 소프트웨어를 보았습니다 . IMHO, WORA는 마케팅 특수 효과입니다.


1
이것은 실제로 질문에 대한 답변이 아닙니다.
Eric Wilson

Java는 모든 실용적인 목적으로 WORA이기 때문에 -1입니다. 그것은 것입니다 당신이 특정 시스템 해킹 및 JNI 같은 분명히 네이티브 물건을 피할 경우 작동합니다. 필자는 컴파일 된 .jar 파일을 사용하여 처음에는 50,000 개 이상의 라인 응용 프로그램을 Windows, Mac 및 Linux에서 완벽하게 실행했습니다. 순수한 Java를 고수하면 모든 것이 잘 작동합니다.
mikera 2016 년

1
WORA의 의미를 잘못 이해 한 것 같습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.