티스토리 뷰

Java/기본기

[JAVA] Java는 정말 WORA할까?

Jason of the Argos 2021. 8. 11. 00:15

WORA란 무엇인가?

Write once, run anywhere(WORA), 또는 Write once, run everywhere (WORE)은 말 그대로 한 번 작성한 코드를 OS에 종속적이지 않고 어디서든 실행시킬 수 있다는 Java의 특징이다. Sun Microsystems (현 Oracle 소속)에서 Java 언어의 장점을 어필하기 위해 슬로건으로 내세웠다.

 

즉 Java 프로그램은 어디서든 개발이 가능하고, 어느 디바이스에서도 표준 바이트코드로 컴파일이 되고 JVM이 탑재되어있는 기기라면 어디서든 실행가능하다는 것이 WORA의 본 의미였다. 예를 들면 개발자가 PC에서 개발한 코드를 JVM이 있는 핸드폰, 라우터, 메인프레임 서버 등 여러 곳에서 실행시키는 것이다. (이런 아이디어는 1960년대 IBM m44/44X, 1970년대의 UCSD Pascal 시스템에서 고안되었다고 한다)

 

Java는 정말 WORA 할까?

그럼 현실은 정말 Sun 시스템에서 주장한 것처럼 Java는 만능이었을까? 만약 모든 Java 프로그램들이 하나의 통합된 JVM에 돌아갔다면 그랬겠지만 현실은 그렇지 않다. 여러 JVM이 나오고, 각 버전이 다른 OS를 기반으로 두고 있었기 때문에  Java 프로그램은 어느 JVM/OS 에 돌아가는가에 따라 약간의 차이가 난다. 이런 차이점은 결국 개발한 프로그램을 여러 타겟 플랫폼에서 테스팅해야하는 결과를 불러왔다. 이러한 현실로 인해 Java 개발자들 간에 한 번 코딩하고 모든 곳에서 디버깅해라 (Write Once,  Debug Everywhere)라는 유행어가 돌았다고...

 

그럼 어느 정도의 이식성을 가지고 있는거지?

사실 Java가 약속한 완벽한 WORA가 지켜지지 않은 것이지 대부분의 경우 Java로 작성한 프로그램은 거의 모든 JVM에서 잘 돌아간다. 다만 특정 VM에 한정된 기능을 많이 사용한다면 이식성이 떨어질 수 밖에 없다고 한다.

 

 

[참조]

1. https://en.wikipedia.org/wiki/Write_once,_run_anywhere

2. https://www.electronicdesign.com/technologies/embedded-revolution/article/21772079/write-once-debug-everywhere

 

'Java > 기본기' 카테고리의 다른 글

[JAVA8] 6. Optional  (0) 2022.04.17
[JAVA 8] 3. 스트림의 기본  (0) 2022.03.13
[JAVA 8] 1. 동작 파라미터화  (0) 2022.02.19
[Java 기본] I-1. JVM이란 무엇인가  (0) 2021.07.13
[JAVA] Wrapper 클래스는 왜 있는 걸까?  (0) 2021.03.05