Java 버전별 특징들을 정리한 내용입니다.

JAVA 버전 발표일 특징 비고
Java SE 13 2019년 9월 17일 - switch문에 yield 예약어 추가  
Java SE 12 2019년 3월 19일 - switch문 확장 ( -> )
- 가비지 컬렉터 개선
- 마이크로 벤치마크 툴 추가
- 성능개선
 
Java SE 11 2018년 9월 25일 - lambda 파라미터에 대한 지역변수 문법
- 엡실론 가비지 컬렉터
- HTTP 클라이언트 표준화
- OracleJDK의 독점기능이 OpenJDK에 이식 (OracleJDK와 OpenJDK가 동일해짐)
- 2019년 1월부터 OracleJDK가 유료 모델로 전환

-
eclipse 재단으로 넘어간 Java EE 삭제
- JavaFX도 JDK에서 분리하여 별도 모듈 제공

Java SE 10 2018년 3월 20일 - var 키워드를 이용한 지역변수 타입추론
- 병렬처리 가비지 컬렉터
- 개별 Thread로 분리된 Stop-The World
- 루트 CA
- JVM heap영역을 시스템 메모리가 아니 다른종류의 메모리에도 할당
- JDK 레토지토리가 하나로 통합
- Java기반 JIT 컴파일러
- 이전 버전 deprecated처리된 API 삭제
Java SE 9 2017년 9월 21일

- Jingsaw 기반 런타임 모듈화(module)
- JShell 추가(인터프리터 셀처럼 사용)
- private interface method
- immutable collection
- 통합 로깅
- HTTP/2
- HTML 5 JavaDoc
- 프로퍼티 파일에 UTF-8 지원

- 버전을 1.x로 하지 않고 9.0으로 변경
- Ahead-of-time compiler 시범 적용
- Java Applet 기능 종료
- 64비트 버전만 출시

Java SE 8 2014년 3월 18일 - lambda expression
- type annotation
- stream api 추가
- repeating annotation
- static link library
- interface default method
- unsigned integer 계산
- 날짜와 시간 API(new) -> JodaTime
- rhino 대신 nashorn javascript 엔진 탑재
- 32비트 지원 마지막 공식버전
Java SE 7 2011년 7월 7일 - diamond operator <>
- try-resource
- multi-catch
- switch문에 String 사용
- concurrency API(new)
- File NIO(new)
- Java2D 지원
- dynamic language 지원
 
Java SE 6 2006년 12월 11일 - interface에 @Override 추가됨
- JDBC 4.0
- Scripting Language Support
- Java Compiler API
- pluggable annotation
- J2SE -> Java SE로 변경
J2SE 5 2004년 9월 30일 - generics
- annotation
- auto boxing/unboxing
- enumeration
- 가변길이 파라미터
- static import
- concurrency API
- 버전중 1을 빼고 표기
(내부적으로는 1.5, 1.6, 1.7 등을 사용)
J2SE 1.4 2002년 2월 6일 - assert
- regular expression
- NIO
- IPv6
- XML API
- JCE
- JSSE
- JAAS
- Java Web Start
 
J2SE 1.3 2000년 3월 8일 - HotSpot JVM
- JNDI
- JPDA
- JavaSound
- RMI가 CORBA 지원
J2SE 1.2 1998년 12월 8일 - strictfp
- SWING GUI
- JIT CORBA
- Collections
- JDK -> J2SE로 변경 (J2SE 5까지 사용)
- 1999년 업데이트를 통한HotSpot JVM
JDK 1.1 1997년 2월 19일 - inner class
- JavaBeans
- RMI
- reflection
- unicode
- 국제화(internationallization)
 
JDK 1.0 1996년 1월 23일   - 이전에 Oak로 불렸으나, 안정화 작업을 거친 1.0.2부터 JAVA로 변경
JDK 1.0a2 1995년 5월 23일   - 자바 언어가 정식으로 발표된 날
JDK 1.0a 1994년    

 

참조: 나무위키(https://namu.wiki/w/Java)

오라클 자바 튜토리얼(https://docs.oracle.com/javase/tutorial/index.html)이 있어서 소개합니다.
해당 사이트에 들어가서 살펴보니 JAVA에 대한 기본적인 내용 및 심화 내용들이 있습니다.
그동안 책이나 인터넷 검색을 통해 JAVA를 배웠는데.. 정작 오라클 홈페이지의 튜토리얼이 있다는 것을 보고 많은 생각이 들었습니다.
다른 개발언어나 프레임워크, 오픈소스들도 만든 곳의 튜토리얼을 보면 많은 도움이 됩니다.

다음은 튜토리얼 사이트에 있는 목록입니다.
1. JAVA 기본
  1) 시작
  2) 자바 언어 배우기
  3) 클래스 (class) 
  4) 컬렉션 (collections)
  5) Date-Time APIs
  6) 배포 (deplyment)
  7) Java Certifiation

2. JAVA GUI
  1) Swing
  2) JavaFX

3. JAVA 심화
  1) Custom Networking
  2) Extendsion Mechanism
  3) Full-Screen Exclusive Mode API
  4) Generics
  5) Internationalization
  6) JavaBeans
  7) JDBC Database Access
  8) JMX (Java Management Extensions)
  9) JNDI (Java Naming and Directory Interface)
 10) JAXP (Java API for XML Processing)
 11) RMI (Remote Method Invocation API)
 12) Reflection
 13) Security
 14) Sound
 15) 2D Graphics
 16) Sockets Direct Protocol

위의 내용들을 기반으로 Java에 대한 내용들을 정리할 예정입니다.

출처: https://docs.oracle.com/javase/tutorial/index.html

+ 나도 프로그램이 좋아서 시작했던 사람으로서 상당히 공감되는 부분들이 많다. +

1. 내가 원하는데로 창조할 수 있다.
2. 열심히 고생해서 만든 프로그램을 여러 사람에게 나눠 줄 수 있다.
3. 프로그램은 꾸준히 성장한다.
4. 돈이 들지 않는다.
5. 돈이 될수도 있다.
6. 직업적인 면에서 프로그래머는 안정적이다.
7. 노력 여하에 따라서 최고가 될 수 있다.
8. 학문의 깊이가 깊고 넓이가 넓으며 항상 변화한다.
9. 프로그램은 문제를 해결하는 기술이라기보다는 논리의 아름다움을 추구하는 예술이다.

자사한 사항은 www.winapi.co.kr 
(C/C++강좌 -> 1부.문법 -> 3-7.유도형소개 -> 마.논리형)에 있음..

< 출처 : www.winapi.co.kr >

한때는 모든거라고 생각했었는데.. 지금은 밥벌이인가?
글쎄? 좀 더 생각해보고 생각이 정리되면 함 써봐야겠다..