본문 바로가기

JAVA8

JAVA의 버전별 변화(JAVA SE 10 ~ 15) 저번 포스팅에 이어서 이후 버전별 변화에 대해 알아보겠습니다. 1. JAVA SE 10 2018년 3월 20일 발표된 버전입니다. 일반 지원은 2018년 9월에 종료되었습니다. var 키워드를 이용한 지역 변수 타입 추론, 병렬 처리 가비지 컬렉션, 개별 스레드로 분리된 Stop-The-World, 루트 CA 목록 등이 추가되었습니다. 또한 JDK의 레포지토리가 하나로 통합되었으며, JVM 힙 영역을 시스템 메모리가 아닌 다른 종류의 메모리에도 할당할 수 있게 되었습니다. 실험 기능으로 Java 기반의 JIT 컴파일러가 추가되었고, 이전 버전에서 Deprecated 처리된 API는 Java SE 10에서 모두 삭제되었습니다. 2. JAVA SE 11 2018년 9월 25일 발표된 버전입니다. 일반 지원은.. 2020. 11. 30.
JAVA의 버전별 변화(JAVA SE 6 ~ 9) 너무 예전 버전보다는 비교적 최신 버전들의 변화에 대해 알아보겠습니다. 1. JAVA SE 6 2006년 12월 11일 발표된 버전입니다. 일반 지원은 2013년 2월에 종료되었으며, 연장 지원은 2018년 12월에 종료되었습니다. 이때부터 표기가 J2SE에서 Java SE로 바뀌었습니다. Scripting Language Support, JDBC 4.0, Java Compiler API, Pluggable Annotation 등이 추가되었습니다. 스크립팅 언어 지원과 함께 Rhino JavaScript 엔진이 기본으로 탑재되었습니다. 2. JAVA SE 7 2011년 7월 7일 발표 된 버전입니다. 일반 지원은 2015년 4월에 종료되었으며, 연장 지원은 2022년 7월에 종료될 예정입니다. Dynam.. 2020. 11. 30.
JAVA의 언어적 불편함 4. JAVA의 언어적 불편함 4-1. 명사형 사고를 강제 자바는 모든 동작이 객체 상위에서 이루어지게 함으로써 명사형으로 생각하는 것을 강제합니다. 그 결과로 자바에는 전역 함수가 없고 모든 함수는 어떤 클래스에 종속되어있습니다. 이 때문에 기능적인 부분을 작성하는데 자잘한 클래스들을 작성해야 한다는 불편함이 있습니다. 이런 명사 중심적 생각은 확실히 많은 경우 편리하나 동사 중심으로 생각해야 하는 상황도 생각보다 흔하다는 게 문제입니다. 예를 들어서, 퀵 소트를 자바에서 엄격하게 의도된 대로 짜려면 quickSort(array)라는 함수 대신 QuickSorter라는 객체의 생성자에 배열을 넣고, 그 생성자를 참조하는 참조 변수를 이용해 run()을 호출하여 동작시켜야 하는 것입니다. 디자인 패턴을 .. 2020. 11. 30.
JAVA의 예외 처리와 소스 코드 길이 차이 1. 불편한 예외처리 다른 객체지향 언어들처럼, 자바 역시 try~catch문으로 대표되는 예외 처리를 할 수 있습니다. 대부분의 언어에서 차용하고 있는 좋은 기능이지만, 유독 자바는 다른 언어와는 달리 프로그래머의 검사가 필요한 예외(Exception을 직접 상속하는 예외 클래스)가 등장한다면 무조건 프로그래머가 선언을 해줘야 합니다. 그렇지 않으면 컴파일조차 거부합니다. 원래 의도는 '철저한 예외 처리를 하니까 만약에 발생할 수 있는 모든 상황에 안정성을 확보할 수 있겠지.'였으나, 결국 대부분의 경우엔 귀찮다는 이유로, 가장 일반적인 예외인 Exception, 더 막 나가면 Throwable 하나만 써서 넘어가버리고 폭탄 돌리듯 넘기기만 하거나(예외 던지기만 하고 try~catch 안 하면 메서드를.. 2020. 11. 30.
JAVA의 단점 - 속도문제 1. JAVA의 속도 문제 여기서 잠시 유의할 점은, 느리다는 내용은 대부분 C/C++, Pascal, Fortran 같은 네이티브 바이너리 코드를 만드는 언어와 비교했을 때의 이야기입니다. 자바가 C/C++ 보다 2~3배 느리다고 하지만 다른 고수준 언어들에 비해서는 그리 떨어지지 않습니다. 1.4 버전에서 JIT 컴파일 지원이 돼서 많이 빨라졌습니다. 특히 인터프리터/스크립트 언어는 구조적으로 자바에 비해서도 훨씬 느립니다. 예를 들어 요즘 인기 있는 Python은 C보다 수십 배 느리고, 그나마 빠르다고 하는 JavaScript도 자바에 비해서 2배 정도 느립니다. 또한 속도 관련 문제는 하드웨어의 성능이 점점 좋아지고 메모리 가격이 떨어지면서 희석되고 있습니다. 처음 자바가 나왔을 때인 1995년.. 2020. 11. 29.
JAVA의 호환성과 안정성, 가독성 1. JAVA의 호환성 해당 운영체제에 Java Virtual Machine(JVM)을 설치하면 자바로 만든 프로그램은 어떤 컴퓨터에서도 완벽히 똑같이 동작합니다. 가상 머신이 각각의 운영체제에 맞춰서 결과적으로 완벽히 똑같이 돌아갈 수 있도록 제작되기 때문입니다. 가상 머신 없는 운영체제라면 아예 자바 프로그램을 사용하지 못하겠지만, 썬 마이크로시스템즈는 주요 OS용의 가상 머신을 발표하고 있고, IBM, 휴렛팩커드 등의 회사는 직접 자사 운영체제용 JDK/JVM을 제작 발표하며, 이들과 상관없이 독립적으로 특화된 성능 향상 기능을 가진 JVM을 만ㄴ들어서 발표하는 회사도 존재했습니다. 그래서 이 부분은 보통 단점으로 꼽히지 않습니다. 오히려 여러 운영체제에 발 벌리는 업체라면 윈도용, 맥용 등을 따로.. 2020. 11. 28.