Skip to content

Instantly share code, notes, and snippets.

@lhy880518
Last active April 16, 2019 14:50
Show Gist options
  • Save lhy880518/6aa04d11b2b4fa38650dd23ce04182a9 to your computer and use it in GitHub Desktop.
Save lhy880518/6aa04d11b2b4fa38650dd23ce04182a9 to your computer and use it in GitHub Desktop.
java 이야기

자바 이전의 언어는 cpu에 맞는 컴파일러가 필요했고 각각의 환경의 컴파일러를 위한 비용은 비싸고 개발하는데 시간이 너무 소요되었다. 더 나은 방식을 위해 제임스코슬링과 동료들은 다양한 환경의 cpu에서 실행되는 코드를 생성 할수 있는, 이식성이 뛰어난 cross platform언어의 개발에 착수했다. 이러한 배경으로 write once, run anywhere과 같은 철학을 가지고 있는 자바의 탄생으로 이어진다.

자바의 세부적인 부분이 개발되고 있을 무렵 2차적이긴 하지만 자바의 미래를 결정지을 중요한 요인이 나타났다. 바로 월드 와이드 웹(WWW), 1993년경 자바팀은 임베디드 제어기에서 사용할 코드를 개발할 때 자주 나타나던 이식성의 문제가 인터넷을 위한 코드를 개발할 때도 나타난다는 사실을 알게 되었다. 이리하여 자바의 초점이 가전제품에서 인터넷으로 옮겨지게 된다.

자바가 인터넷에 큰 영향을 미친이유는 자바가 가상공간을 자유롭게 돌아 다닐 수 있는 객체의 세계를 확장했기 때문이다. 네트워크에는 서버와 PC사이에 전송되는 두가지 객체 영역이 존재 하는데, 수동적 정보와 동적이고 능동적인 프로그램이 그것이다. 예를 들자면 email을 읽는것은 수동적 정보를 보는것이고, 프로그램을 다운로드할 때도 그것을 실행하기 전까지는 프로그램 코드는 수동적 정보가된다. 하지만 또다른 형태의 객체가 PC컴퓨터에 전송될 수 있는데 그것이 바로 동적인 자가 실행 프로그램이다. 이러한 프로그램은 서버에 의해 시작되지만 클라이언트 컴퓨터에서 실행된다. 그 예로 서버가 보내는 정보를 클라이언트 컴퓨터의 화면에 표시하기 위해 서버가 제공하는 프로그램을 들 수 있다.

네트워크 상에서 동작하는 프로그램이 동적일수록 보안이나 이식성의 문제가 심각해진다. 자바 이전의 가상공간은 현재에 존재하는 실체들의 절반에게만 열려 있었다. 자바는 이 문제에 관심을 가졌고, 이 과정에서 애플릿 이라는 새로운 형식의 프로그램을 정의하게 된다.

  • jre와 jdk
  • jre - 자바 애플리케이션을 실행하기 위한 Java Virtual Machine을 구현하는 환경
  • jdk - 자바 기반의 애플리케이션을 개발하는데 필요한 번들로써 다양한 도구와 JRE를 포함하게되므로 넓은 디스크 공간이 필요하다. jdk는 자바 애플리케이션과 애플릿을 작성하는데 필요한 jre, api클래스 집합, 자바 컴파일러 web start및 추가 파일을 제공합니다.
  • jvm, jre, jdk는 플랫폼에 의존적이지만 덕분에 jdk를 통해 작성된 프로그램은 플랫폼 독립적으로 실행될 수 있다.

자바 애플리케이션과 애플릿 자바로 애플리케이션과 애플릿이라는 두가지 형태의 프로그램을 만들 수 있다. 애플리케이션 - 운영체제하에서 실행되는 프로그램, 다른 언어로 개발된 프로그램과 비슷하다 애플릿 - 자바를 독특하게 만드는 자바의 기능, 애플릿은 인터넷상에서 전송되고, 자바를 지원하는 웹브라우저에서 실행될 수 있도록 설계된 프로그램 애플릿은 오로지 자바로만 개발 할 수 있다. 애플릿을 통해서 자바는 보안과 이식성을 해결했다.

침몰해버린 애플릿(https://www.youtube.com/watch?v=dJVXw1SJO4Q 여기는 애플릿의 개념 및 예제) 애플릿은 자바로 작성한 프로그램을 미리 업로드 하고 브라우저 상에서 애플릿 태그로 불러온다. 애플릿 태그가 실행되면 브라우저에서는 프로그램을 다운로드 한 다음 실행한다. 방식으로 보자면 액티브X, 어도비플래시 및 AIR, 실버라이트와 다를것은 없지만 운영체제에서 직접 실행되는 것이 아니라 자바 가상머신에서 실행된다. 따라서 애플릿을 실행하려면 자바가상머신을 운영체제에 미리 깔아야 한다. 보안과 브라우저에서의 자바 플러그인의 보안 취약성으로 인한 일련의 사고 및 이에 대한 오라클의 뒤늦은 대응 (해당내용은 참고글에서 나온내용이기에 정확히 어떤 사건인지는 모름) 때문에 개발자 뿐만 아니라 IT인프라의 아키텍쳐를 결정하는데도 부정적인 영향을 끼쳤다. 또한 인터넷의 실행 환경인 웹브라우저가 점점 더 발전하고 거기다 HTML5, Javascript가 발전하면서 더이상 애플릿,플래시 같은 웹플러그인은 장점이 사라져갔다.

간편요약

  • 자바는 다양한 환경의 CPU에서 실행 되는 코드를 생성 할 수 있는 이식성이 뛰어난 Cross Platform언어이다.
  • 자바개발 진행 중 등장한 월드 와이드 웹의 출현이 자바의 대 성공을 이끈 이슈이다.
  • 자바 애플리케이션과 애플릿 두가지 형태의 프로그램을 만들 수 있다. 자바의 특징은 애플릿이나 보안문제로 사장되고 말았다. JavaEE
  • 현재는 Java EE의 복잡도로 인해 스프링과 같은 프레임워크를 통해 웹 애플리케이션 서버를 개발하는 추세이다.

참고한 페이지

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment