Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

자바의 역사

2020년, 정확히는 5월 23일에 자바는 25번째 생일을 맞이했다. 자바 언어가 정체되고 더 이상 발전이 없을 것이라는 얘기는 자바 6와 자바 7 사이에 나왔다. 자바를 주도하던 썬마이크로시스템이 오라클에 합병되면서 신규 버전 발표가 지연되었고, 자바에 대한 우려가 커지던 시기였기 때문이다.

자바(1995년)보다 더 오랜 역사를 가진 파이썬(1991년)이 대세 언어로 관심을 받기 시작하였다.

자바 버전을 6개월마다 업그레이드하기로 결정한 이후 오라클에서는 자바의 버전 명명 규칙을 숫자를 하나씩 늘려가는 형태에서 연도와 월을 조합하는 방식으로 변경할 것을 제안하였다. 하지만 이러한 명명 규칙 변경 안은 채택되지 않았고, 지금처럼 계속 숫자를 늘려가는 형태를 유지하기로 하였다.

자바 모듈화

자바 모듈화(혹은 자바 모듈 시스템)는 실행, 컴파일, 빌드 시점에 결합할 수 있도록 JDK를 모듈로 분할할 수 있게 해주는 기능이다. 모듈화를 통해 자바 SE 뿐만 아니라 자바 EE 기반으로 대규모 소프트웨어를 개발할 때 더욱 용이하게 라이브러리를 관리할 수 있다.

애초에 자바 언어가 만들어진 목적이 가전 제품과 같은 저사양 장치에서 동작하는 프로그램을 만들기 위해서였다고는 믿기 어려울 정도로 대형화되었다. 자바 모듈화는 이러한 문제를 해결하고 좀 더 가볍고 체계적으로 라이브러리와 자바 가상 머신을 관리하기 위한 플랫폼을 제공하는 것이 목적이다.

모듈이란 소프트웨어를 구성하는 한 부분을 의미하며 코드의 집합이나 영역 등을 의미하기도 한다.

자바 모듈화 등장 배경

자바 플랫폼 모듈 시스템(https://www.jcp.org/en/jsr/detail?id=376)이 자바 모듈 시스템(https://www.jcp.org/en/jsr/detail?id=277)과 자바 프로그래밍 언어의 향상된 모듈 지원(https://jcp.org/en/jsr/detail?id=294)을 대체

  • 신뢰성 있는 설정(reliable configuration)
  • 강력한 캡슐화(strong encapsulation)

기존 문제점

  • 개발한 일부 기능을 외부에 숨기고 싶을 때 이를 통제하고 막을 수 있는 방법이 뚜렷하지가 않다.
  • 멤버 변수와 메서드에는 접근을 제어할 수 있지만 클래스 단위로 제한하는 방법은 없다.
  • 자바를 컴파일하고 실행하기 위한 클래스패스가 거대해졌다.
  • 자바 가상 머신이 커지다 보니 필요 없는 기능도 어쩔 수 없이 메모리에 올리거나 사용하는 경우가 많다.
  • 동일한 클래스가 여러 JAR에 중복해 들어가는 경우가 있으며 심지어 과거 버전과 현재 버전이 동시에 배포되는 경우도 있다.

rt.jar

자바 런타임 라이브러리. 자바 8까지는 자바에서 제공하는 모든 기본 클래스가 rt.jar에 포함되어 있어서 선택의 여지가 없었다. 모듈화 프로젝트에서는 rt.jar 내의 클래스를 용도에 따라 분류했고 모듈에 따라 별도의 jar 파일로 분리하였다.

자바 8 이전

Image Added

자바 9 이후

Image Added

참고 자료