이것이 자바다

jj·2022년 6월 17일
0

Java

목록 보기
1/3

프로그래밍 언어는 고급언어와 저급언어로 나뉜다.

  • 고급언어: 컴퓨터와 대화할 수 있도록 만든 언어 중에서 사람이 쉽게 이해할 수 있는 언어. 컴파일 과정을 통해 기계어로 번역하는 과정이 필요함. 소스 -> 컴파일 -> 프로그램 -> 프로세스
    예를들어, C, C++, Java

  • 저급언어: 기계어에 가까운 언어. 예를들어 어셈블리어

자바의 특징

1. 이식성이 높은 언어이다.
이식성이란 서로 다른 실행환경을 가진 시스템 간에 프로그램을 옭겨 실행할 수 있는 것을 말한다. Java는 JRE(Java Runtime Environment)이 설치되어 있는 모든 OS에서 실행이 가능하다.


2. 객체지향 언어이다.
OOP(객체지향 프로그래밍). Java는 100% 객체 지향 언어이다. 처음부터 객체를 고려하여 설계되었다.


3. 함수적 스타일 코딩을 지원한다.
?


4. 메모리를 자동으로 관리한다.
Java는 개발자가 직접 메모리에 접근할 수 없도록 설계되었으며, 메모리는 Java가 직접 관리한다. 객체 생성 시 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 Garbage Collector를 실행시켜 자동적으로 사용하지 않는 객체를 제거시켜준다.


5. 다양한 애플리케이션을 개발할 수 있다.
Java는 다양한 os에서 실행되는 프로그램을 개발할 수 있다. 콘솔 프로그램, 클라이언트용 윈도우 app, 서버용 웹 app, 모바일용 안드로이드 app 등 거의 모든 프로그램을 개발할 수 있다.


6. 멀티 스레드를 쉽게 구현할 수 있다.
스레드 생성 및 제어와 관련된 라이브러리 API를 제공하므로 OS에 상관없이 쉽게 멀티 스레드를 구현할 수 있다.


7. Dynamic loading을 지원한다.
Java app은 여러 개의 객체가 서로 연결되어 실행된다. 객체들은 class로부터 생성되는데 app이 실행될 때 모든 객체가 실행되지 않고, 객체가 필요한 시점에 class를 dynamic loading해서 객체를 생성한다.


8. 막강한 오픈소스 라이브러리가 풍부하다.



JVM, JRE, JDK?

Java SE
Java 프로그램들이 공통적으로 사용하는 JVM을 비롯해서 Java 프로그램 개발에 필수적인 도구와 라이브러리 API를 정의한다. JDK는 Java SE의 구현체이다.


Java EE
Java EE는 분산환경에서 서버용 app을 개발하기 위한 도구 및 라이브러리 API를 정의한다. 서버용 APP으로는 Servlet/JSP를 이용한 웹 앱, 분산 처리 컴포넌트인 EJB 그리고 XML 웹 서비스 등이 있다.


JDK
Java 프로그램은 완전한 기계어가 아닌, 중간 단계의 Byte 코드이다. 이를 해석할 수 있는 가상의 운영체제가 JVM이다. Byte 코드는 모든 JVM에서 동일한 실행 결과를 보장하지만 JVM은 운영체제에 종속적이다. 따라서 JVM은 운영체제에 맞게 설치되어야 한다. 확장자가 .java인 소스파일을 작성하고 javac.exe로 컴파일 하면 확장자가 .class인 Byte 코드 파일이 생성된다. Byte 코드 파일은 JVM 구동 명령어(java.exe)에 의해 JVM에서 해석되고 해당 운영체제에 맞게 기계어로 번역된다. JVM에 의해 번역되는 기계어는 OS에 따라서 달라진다. JVM이 구동되면 main() 메소드를 찾아서 실행시킨다. main() 메소드를 entry point라고 한다.


JDK vs JRE
JDK: JRE + 컴파일러 등의 개발도구
JRE: JVM + 라이브러리 API (컴파일러 없음)

profile
끊임없이 공부하는 개발자

0개의 댓글