자바는 썬 마이크로시스템즈의 제임스 고슬링과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다.
현재까지도 현업에서 가장많이 사용되는 객체 지향 언어이다. 이형이 개발에 참여했다.
...행복해보인다.
뭐 접어두고 JAVA의 특징에 대해 알아보자
class
를 로딩하는 것이 아니라 필요한 시점에 class
를 로딩해 사용한다.객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.
절차 지향의 언어는 코드의 순서대로 해석해 스택을 쌓아가며 완성하는 프로그래밍 기법이라면 객체 지향 언어는 개발자가 설계도를 만들고 그 설계도로 만들어진 객체들을 전달하고 설정하며 완성하는 프로그래밍 기법이다.
예를 들어 애플을 예로 들어보자.
public class iPhone7 {
private String phoneNumber;
private String appleId;
...
public void setNumber (String i_phoneNumber) {
this.phoneNumber = i_phoneNumber;
}
public String getNumber () {
return this.phoneNumber;
}
...
}
이와 같은 아이폰7 설계도(class
)가 있다 치자
iPhone7 carrotsPhone = new iPhone7();
iPhone7 durianPhone = new iPhone7();
carrotsPhone.setNumber("010-1111-2222");
durianPhone.setNumber("010-2222-4444");
해당 아이폰 설계도를 통해 carrotsPhone
과 durianPhone
을 만들었다.
각 아이폰에는 카메라 찎는 기능, 전화거는 기능, 페이스 타임등 같은 기능을 포함하고 있다.
그렇다고 carrotsPhone
과 durianPhone
이 같은 핸드폰인가?
carrots
과 durian
은 같은 종류의 아이폰을 구매했지만 이후 각자의 전화번호를 설정했다. 설계도를 통해 핸드폰을 만들고 각 핸드폰마다 저장되는 데이터가 다르다.
위의 예제가 객체 지향 프로그래밍의 핵심이다.
특정 기능을 수행하는 설계도를 만들고, 그 설계도를 사용해 객체를 생성한다.
같은 설계도를 사용했더라도 각 객체는 서로 다른 속성을 지닌다. 각 객체는 설계도에 정의된 기능을 수행하고 전달한다. 모든 작업은 객체단위로 수행되며, 이런 일련과정을 통해 프로그램을 완성해 나간다, 그것이 객체 지향 프로그래밍이다.
대충 이런 구조를 갖고있다.
JAVA 플랫폼의 등장 이래 지금까지 가장 널리 사용되는 소프트웨어 개발 키트다.
쉽게 말해 우리가 JAVA 코딩을 하기 위해 필요한 개발 킷이다. 기본적으로 변수 선언할때 String, int, boolean 등등 이런 것들이 포함되어있다. JAVA 코드를 보면 상단에
import java.util.*;
요런 문구를 봤을 것이다. 이게 JDK 안에 포함되어 있다고 보면 쉽다.
JDK에는 javac(컴파일러)가 존재하는데 컴파일러를 통해 JAVA 소스 파일을 클래스 파일로 가공할 수 있게 된다.
JAVA 개발 키트(JDK)의 일부로 JRE는 JAVA 가상 머신(JVM), JAVA 클래스 라이브러리, Java 클래스 로더로 구성된다.
무슨 말인고 하니 그냥 실행 환경이라고 생각하면 된다.
JVM에 구동시키기 전에 컴파일된 자바 클래스 파일을 읽어들이고 연결한다.
자바 가상 머신은 자바 바이트코드를 실행할 수 있는 주체이다.
스택 기반 가상머신으로 실제로 컴파일되어 로드된 클래스를 실행시킨다.
Garbage collection은 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다. JAVA는 JVM 내부에 다음과 같은 작업을 수행하는 Garbage collector가 포함되어있다.
Garbage collector에 대해서는 다음 글에서 상세하게 다룬다.
JDK : JAVA 소스 읽기 / 쓰기
JRE : JAVA 소스 읽기
JVM : javac로 컴파일되어 class 바이트 코드 실행
오늘은 JAVA와 개발도구인 JDK, 런타임 JRE,가상머신 JVM을 알아보았다. 이 글에선 JAVA 실행환경 구성에 대해서는 다루지 않겠다. 형식적인 블로그 글은 쓰고 싶지않다.
오늘 저녁은 짬뽕이다. 🥕
참조 : https://velog.io/@cateto/Java-Eclipse%EC%97%90-%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95-%EC%8B%9C-jdk-jre-%EC%B0%A8%EC%9D%B4
https://medium.com/@lazysoul/jvm-%EC%9D%B4%EB%9E%80-c142b01571f2