◆ 자바란?
James Gosling + Arthur Van Hoff + Andy Bechtolsheim 의 약자로
(제임스 고슬링) (아더 반 호프) (앤디 베크톨쉐임)
썬 마이크로시스템즈의 핵심 개발자들의 이름의 첫글자를 따서 만들어졌다고 한다.
2009년 썬 마이크로시스템즈가 오라클과 인수 합병으로 자바에 대한 권리 및 유지보수는 오라클이 갖고있다.
현재 웹 애플리케이션 개발에 가장 많이 사용하는 언어 중 하나이고, 모바일 기기용 소프트웨어 개발에도 널리 사용하고 있다.
▷ 자바의 특징
자바는 JRE (실행환경) + JDK (개발도구) + API (라이브러리) 를 제공한다.
JRE : Java Runtime Environment
자바 애플리케이션을 실행하기 위한 최소의 실행환경을 제공한다.
JVM에서 자바 라이브러리와 기타 파일들이 결합된 자바를 실행하기 위한 프로그램이다.
JDK : Java Development Kit
Java 개발할 때 필요한 툴킷을 제공하는 도구모음이다.
JRE에서 제공하는 환경뿐만 아니라 자바 개발에 필요한 여러가지 명령어, 컴파일러를 포함한다.
( 자바 App 메모리 상태를 알아보는 명령어, 배포 명령어 )
* JDK = JRE + @
JRE는 읽기전용 , JDK는 읽기 / 쓰기 전용 라고 생각하면 된다.
API : Application Programming Interface
응용프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든
인터페이스이다. API는 프로그램을 개발하는데 필요한 기능을 미리 만들어 둔 것
- 객체 지향 언어
객체 지향 프로그래밍 OOP (Object Oriented Programming)으로 부품에 해당되는 객체들을 먼저 만들고 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법이다
객체를 만들기 위한 설계도인 클래스를 작성하고 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어 낸다.
또한 객체 지향 언어의 특징인 상속, 캡슐화, 다형성이 잘 나타난다.
- 독립적인 운영체제 (플랫폼)
기존의 언어들은 운영체제에 따라 코드를 따로 작성해야 했다. 그러나 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트코드라는 특수한 바이너리 형태로 변한한다. 바이트코드를 실행하기 위해서는 JVM이라는 가상 머신으로 바이트코드를 어느 플랫폼에서나 동일한 형태로 실행시킨다.
JVM : Java Virtual Machine
자바 가상 머신으로 자바 바이너리 파일(.class)를 실행할 수 있다.
JVM은 플랫폼에 의존적이라 리눅스의 JVM, 윈도우의 JVM이 다르지만
컴파일된 바이너리 코드는 어떤 JVM에서도 동작할 수 있다.
자바의 실행 흐름
Java 코드 생성 → JDK 컴파일( .class 파일 생성 ) → JVM → 실행
- 자동 메모리 관리 ( Garbage Collection)을 지원
가비지 컬렉션이란 개발자가 메모리를 관리하지 않아도 되는 메모리 회수 기법이다. 자바는 개발자가 메모리에 직접 접근할 수 없으며 자바가 직접 메모리를 관리한다. 객체를 생성할 때 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 가비지 컬렉터 ( Garbage collector )를 실행시켜 자동으로 사용하지 않는 객체를 제거한다.
-멀티 스레드 지원
하나의 프로그램에서 다수의 스레드가 동시에 실행할 수 있는 환경을 지원한다. 보통은 멀티스레드를 사용하기 위해 운영체제가 멀티 스레드를 지원하고, 멀티스레드와 관련 API나 라이브러리를 제공해야하지만 자바는 운영체제의 도움 없이 프로그래밍이 가능하다.
-동적 로딩 ( Dynamic Loading )을 지원
애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 각 객체가 필요한 시점에 클래스를 동적 로딩해서 생성한다.
또한 유지보수 시 해당 클래스만 수정하면 되기 때문에 전체 애플리케이션을 다시 컴파일할 필요가 없어 유지보수가 쉽고 빠르다.
▷ 자바가 쓰이는 곳
- PC 애플리케이션
- 웹 애플리케이션
- 모바일 애플리케이션 (안드로이드)
- 빅 데이터 (Big Data)
- 게임 (마인크래프트), 과학, 소형기기 등
'LANGUAGE > Java' 카테고리의 다른 글
상수, 리터럴 정리 (0) | 2021.03.26 |
---|---|
주석 정리 (0) | 2021.03.26 |
변수 정리 (0) | 2021.03.26 |
이클립스 ( ECLIPSE ) 프로젝트 가져오기 / 내보내기 (0) | 2021.03.26 |
이클립스 ( ECLIPSE ) 설치 및 컴퓨터 환경 설정 (0) | 2021.03.26 |