본문 바로가기

Dev.BackEnd/JAVA

[JAVA] 0. 자바(JAVA)란 무엇인가?



JAVA

출신배경
Java는 Sun Microsystems가 1995년에 처음 출시한 프로그래밍 언어이다.
제임스 고슬링과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다.
기존의 WWW가 가지고 있던 한계 극복의 필요성으로 탄생하게 되었다.

특징
자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트 코드라는 특수한 바이너리 형태로 변환한다.
변환된 바이트 코드를 실행하기 위해서는 JVM(자바 가상 머신)이라는 특수한 가상머신이 필요하다.
이 가상 머신은 자바 바이트코드를 어느 플랫폼에서나 동일한 형태로 실행시킨다.
때문에 자바로 개발된 프로그램은 CPU나 운영체제의 종류에 관계없이 JVM을 설치할 수 있는 시스템 어디서나 실행할 수 있다.

분산환경을 지원한다
자바에는 TCP/IP 라이브러리가 기본적으로 포함되어 있다.
또한 http 와 htp 프로토콜을 기본적으로 지원한다.

인터프리터언어이다
컴파일 언어인 동시에 인터프리터 언어이다.
텍스트 소스를 컴파일 하여 2진 파일(클래스 파일)로 만든 다음 자바런타임이 클래스 파일을 인터프리트 하면서 실행한다.
시스템에 무관한 2진 파일을 만듬으로써 자바는 컴파일 언어에 가까운 속도와 시스템 독립성을 동시에 얻을 수 있다.

멀티쓰레딩을 지원한다.
프로그램 단위가 동일한 쓰레드를 동시에 수행할 수 있다.
사용자 인터페이스 쓰레드와 장시간 계산이 필요한 쓰레드가 동시에 필요할 때 효과적이다.

자동 메모리 관리(Garbage Collection)
사용하지 않는 메모리를 체크하고 반환해주는 Garbage Collector가 존재한다.

동적로딩을 지원한다.
실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있다.
애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 애플리케이션을 작성할 수 있다.



Java프로그램 

Java 애플릿(applet)
Web브라우저 상에서 동작하는 프로그램
HTML 안에서 애플릿을 지정하면 Web 서버로부터 자동적으로 다운로드 되어 클라이언트의 Web브라우저 상에서 동작한다.

Java 서블릿(servlet)
Web 브라우저 상에서 동작하는 프로그램으로, 서버에서 실행되고 실행 결과를 Web 페이지로 클라이언트에게 보내준다.
Java를 기반으로 만든 웹 어플리케이션 프로그래밍 기술.
CGI 성능을 개선한 방법을 Servlet
CGI (Common Gateway Interface)로 웹 서버와 프로그램을 연결 시켜주는 일종의 프로토콜
웹 서버의 일부분으로 서버측에서 수행되는 다른 응용프로그램과 통신할 수 있는 기능을 제공
클라이언트의 요청이 생길 경우 프로세스를 생성하는 것이 아니라 쓰레드를 생성한다.

JSP(Java Server Page)
HTML 문서와 Java프로그램을 조합하여 동적인 Web 페이지를 간단하게 만들 수 있다.
서버에서 실행되고 그 결과를 클라이언트에게 보내준다.
HTML 문서 속에 Java 코드를 삽입하는 형태로 작성한다.
Servlet의 단점(HTML 소스코드가 자바 소스 코드 속에 들어가는 구조)을 보완하면서 탄생
Servlet과는 반대로 HTML 소스 코드 속에 자바 소스 코드가 들어가는 구조의 웹 어플리케이션 프로그래밍 기술.
자바 소스 코드로 작성된 코드는 웹 서버 쪽에서 실행되는 부분.

두가지를 혼용하여 사용.
복잡한 기능은 Servlet으로 작성하고 그 결과를 JSP로 작성한 웹 페이지를 통해 출력.

Java Beans
Java로 작성된 프로그램을 부품으로써 다루는 것.
디자이너가 작업하는 View부분
프로그래머가 작업하는 로직(model)부분
두 부분으로 나눈다. 
1) JSP페이지의 로직 부분을 분리해서 코드를 재숑함으로 프로그램의 효율을 높인다
2) 프로그램의 모듈화(컴포넌트)라고 할 수 있다.


Version
Java SE(Java Standard Edition)
클라이언트 지향의 기본적인 환경
Java EE(Java Enterprise Edition)
큰 규모를 지닌 네트워크 애플리케이션, 웹 기반 애플리케이션 개발을 위한 환경
Java ME(Java Micro Edtion)
메모리가 작은 값으로 제한된 기기들의 개발을 위한 환경

SDK(Software Development Kit)

JDK(Java Development Kit)