JAVA 철학
- 객체 지향 방법론을 사용해야 한다.
- 같은 프로그램(바이트코드)이 여러 운영 체제에서 실행될 수 있어야 한다.
- 컴퓨터 네트워크 접근 기능이 기본으로 탑재되어 있어야 한다.
- 원격 코드를 안전하게 실행할 수 있어야 한다.
- 다른 객체 지향 언어들의 좋은 부분만 가지고 와서 사용하기 편해야 한다.
JAVA 특징
- 호환성이 높은 언어 - JVM 위에서 돌아가기 때문에 운영체제의 종류에 상관없이 실행된다.
- 객체지향 프로그래밍(OOP) - 하나의 기능을 객체로 만들고, 이러한 객체들을 결합해서 하나의 프로그램을 만든다
- 함수적 스타일 코딩을 지원 - 람다식을 자바 8부터 지원(컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 매우 간결)
- 메모리를 자동으로 관리 - Garbage Collector를 실행시켜 자동적으로 사용하지 않는 객체를 제거
- 다양한 애플리케이션 개발 가능
- 멀티스레드 구현 가능
- 동적 로딩 지원 - 애플리케이션이 실행 될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생성
정적로딩 : 프로그램 실행시 모든 실행파일이 메모리에 적재되어 실행되는 로딩방법(C언어)
메모리를 많이 차지하지만 빠르게 가져와 사용할 수 있다
- 오픈소스 라이브러리가 풍부
객체지향 프로그래밍의 대표적 특징
- 상속 : 부모 클래스의 변수와 메서드를 자식 클래스가 전부 물려받는 것
- 캡슐화 : 객체의 변수 및 메서드를 외부 객체가 함부로 건드리지 못하게 감싸는 개념
- 다형성 : 하나의 객체가 여러가지 타입을 가질수 있는 것(오버로딩, 오버라이딩, 업캐스팅 등)
- 추상화 : 자바에서 공통의 속성, 기능을 묶어 이름을 붙이는 것(추상클래스, 인터페이스)