장점
- 정말 많은 사람이 사용하는 언어이다.
- 오류 해결을 위한 레퍼런스를 찾기 쉽다.
- 2023년 2월 Pypl( PopularitY of Programming Language ) 기준, 2위이다.
- 운영체제에 의존적이지 않다. ( 독립적이다 )
- JVM(Java Virtual Machine)에서 동작하기 때문이다.
- 객체지향 언어이다.
- 자동으로 메모리를 관리해준다.
- GC(Garbage Collector)가 Heap 메모리를 관리해준다.
- 프로그래머는 메모리 관리를 덜 신경써도 된다.
- 오픈소스가 있다.
- OpenJDK와 OracleJDK로 나뉘는데 OpenJDK는 무료다.
- Spring 3.0 이후부터는 OpenJDK(jakarta)를 사용한다.
- 멀티스레드를 쉽게 구현할 수 있다.
- 동적 로딩 (Dynamic Loading)을 지원한다.
- 각 객체를 필요한 시점에 동적으로 로딩해서 생성할 수 있다.
단점
- 비교적 C, C++에 비해 속도가 느리다.
- Java Compiler에 의해서
.class
파일을 생성하고 JVM( JIT )을 통해 기계어를 번역되고 실행되기 때문에 완전한 기계어로 컴파일되는 C, C++ 에 비해 느리다.
- GC의 시점을 정확히 알 수 없다.