모의 면접에서 JAVA개발자로서 JAVA에 대해 설명을 해보라고 하셨는데 하나도 정리가 되어있지않아서 제대로 답변을 못했다. 이참에 우리의 좋은 친구 JAVA에 대해 알아보려한다.
JAVA는 썬 마이크로시스템즈(Sun Microsystems, Inc.)에서 개발하여 1996년 1월에 공식적으로 발표한 객체지향 프로그래밍 언어이다.
원래의 목표는 C++을 확장하여 가전제품에 탑재될 소프트웨어를 제작하는 것이었는데, C++로는 불가능하다는것을 깨달은 진성컴공들(제임스 고슬링, 아서 밴 호프)이 C++의 장점을 도입하고 단점을 보완한 새로운 언어를 개발한것이 JAVA이다.
운영체제의 종류에 관계없이 실행이 가능하다.
JVM(Java Virtual Machine)을 통해 운영체제와 상관없이 동작가능하다.
JAVA application은 운영체제나 하드웨어가 아닌 JVM하고만 통신을 하고 JVM이 운영체제가 이해할 수 있도록 변환하여 전달한다.
한번 작성하면, 어디서나 실행된다(Write once, run anywhere)
객체지향 프로그래밍언어의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향 언어이다.
캡슐화(Encapsulation)
→ 데이터와 코드의 형태를 외부로부터 알 수 없게하고, 데이터의 구조화 역할, 기능을 하나의 캡슐형태로 만드는 방법
상속(Inheritance)
→ 상위 클래스의 모든걸 하위 클래스가 모두 이어받는 것
다형성(Polymorphism)
→ 한 객체가 다른 객체로 재구성 되는 것(Overriding, Overloading)
Overriding
하위 클래스가 부모 클래스의 기본적인 동작방법을 변경하는 것
Overloading
같은 이름을 가진 메서드가 파라미터의 수나 자료형이 다른 것
추상화(abstraction)
→ 객체의 공통적인 속성과 기능을 추출하여 정의하는 것
연산자와 기본구문은 C++에서, 객체지향관련 구문은 small talk이라는 객체지향언어에서 가져왔다.
장점은 취하면서 복잡하고 불필요한 부분은 과감히 제거하여 단수화함으로서 쉽게 배울 수 있다.
가비지 컬렉터(garbage collector)가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 메모리를 따로 관리 하지 않아도 된다.
Java API를 통해 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발할 수 있도록 지원한다.
시스템과는 관게없이 멀티쓰레드 구현이 가능하며, Java API가 제공되므로 구현이 쉽다.
실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다.
일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 된다.
출처 : 남궁성 <Java의 정석>