자바의 특징
객체지향
- C++, Java, python등에서 사용되는 개념
자동 메모리 관리
- 자바가 나오기 전에는 '사람'이 직접 메모리를 관리를 했어야 하지만, 자바에서는 Garbage Collector(GC)가 메모리를 알아서 정리해 준다
멀티 쓰레드 지원
- 하나의 프로그램에서 여러개의 작업을 가능하게 해줌
풍부한 라이브러리 제공
- 라이브러리? 프로그램을 개발하는데 자주 쓰이는 기능들을 제공해 주는 것
운영체제에 독립적
- 일반적으로 프로그래밍을 작성하면, 특정 운영체제에서만 운영이 가능함(=윈도우에서 작성한 프로그램은 리눅스에서 사용 불가능)
- 그치만 자바의 경우엔 어느 운영체제에서나 사용 가능
- 어째서? 자바 가상 머신 때문
자바 가상 머신(JVM - Java Virtual Machine)
자바 프로그램이 실행되는 가상 컴퓨터
한번 작성하면, 어디서든 실행 - Write once, Run anywhere

출처: https://www.tcpschool.com/java/java_intro_programming
자바는 운영체제별로 JVM이 개발되어 있어서, 자바 애플리케이션을 구현하고 나면 다른 운영체제에서도 실행함에 있어 전혀 문제가 되지 않는다.