Java Day1 자바 언어의 소개
java를 진짜 다 잊어서 인프런에서 java 강의 하나를 결제했다.
이 강의를 들으면서 타이핑을 해둘 생각이다. 다시 대학생 된 것 같아!
65강짜리인데 1주일안에 듣는 게 목표다.
근데 당장 다음 주에 오픽 접수를 해뒀다. 쩝...
어쨌든 열심히 해야지! 나도 취업할래애,,, 😥😥😥😥😥
1. 자바 언어의 탄생
- 1991년 Sun사, James Gosling
- 초기에 개발된 언어 : Oak
- 1994년, World Wide Web 등장
- Oak -> Java
- Java beta1, beta2...
2. 자바 언어의 종류
- Java 2 Platform, Standard Edition(J2SE) : 자바의 가장 기본 버전
모든 자바 프로그램은 J2SE에서 제공되는 컴파일러와 JRE를 사용.
컴파일러? 개발자가 만든 소스 코드를 실행 가능한 형태로 만들어주는 것. J2SE를 통해서 제공.
SE에서 제공하고 있는 JRE(Java Runtime Environment) : Java 프로그램을 실행할 수 있는 실행 환경.
- Java 2 Platform, Micro Edition
- 모바일 장비를 위한 Edition
- 휴대폰에 가장 적합한 버전
- 개발 시 사용할 J2SE의 버전은 1.3이나 1.4버전이 가장 적합.
- LG U2+ : J2ME의 라이선스를 구매해 탑재.
- SKT : J2ME의 상당 부분을 재 프로그래밍 -> SK-VM
- WIPI : Java를 기반으로 만들어진 국내 이동통신 3사 통합 플랫폼.
- Android : 스마트폰 전용 운용체제, J2ME 제품 군에는 속하지 않음. Java 기반으로 만들어진 새로운 운영체제.
- Java 2 Platform, Enterprise Edition (J2EE)
- 기업용 환경에서 서비스하기 위한 어플리케이션을 개발할 때 사용되는 버전
- 기본 J2SE가 필요. 최신 버전의 J2SE를 사용하는 것을 권장.
- 주로 Web Application Service를 만들 때 사용됨.
- Suvlet : 웹 서비스를 위해 제공되는 기술. 인터넷 익스플로러와 같은 웹 브라우저를 통해서 서비스를 받을 수 있는 그러한 어플리케이션을 개발할 때 사용되어지는 프로그램.
- JSP : Java 서버 페이지. suvlet 프로그램을 만들기 위해서는 복잡하고 난해한, 귀찮은 부분이 많은데 이러한 부분을 쉽게 할 수 있도록 제공되는 것. 내부적으로는 Suvlet으로 변환되어 실행.
- EJB (Enterprise Java Beans) : Java에서 제공되는 분산 컴포넌트 기술로 비즈니스 로직이나 데이터, 메세지를 처리하는데 사용됨. 전체 프로그램 내에서의 작은 부품들로 생각.
- RMI (Remote Method Invocation) : 프록시를 써서 원격에 있는 Java 객체의 메서드를 실행시키는 기술. Microsoft의 RPC와 유사
- JNDI (Java Naming Directory Interface) : 자바 기술로 만들어진 객체에 이름을 붙여 찾을 수 있도록 단일 인터페이스를 제공
- JDBC (Java Database Connector) : 여러 종류의 데이터베이스 시스템에 접근 하는 단일 인터페이스를 제공
- JCA (Java Connector Architecture) : 서로 다른 종류의 플랫폼을 통합할 수 있도록 독립적인 인터페이스를 제공
- JMS (Java Message Service) : 여러 가지 메시징 시스템에 대한 플랫폼 독립적인 인터페이스를 제공
3. 자바 언어의 특징
- 단순성
- C, C++ 언어를 기반으로 탄생하여 기존의 개발자들에게 문법을 새로 공부하지 않고 접할 수 있다는 특징.
- C, C++ 언어가 가지고 있는 복잡한 부분을 제거하여 언어의 복잡성을 제거하였다(preprocessor, 포인터, 다중상속, 구조체, 전역변수, goto문, 연산자 중복 등.)
- Garbage Collection을 사용하여 개발자로 하여금 메모리 관리에 대한 부분을 개발자가 직접 하지 않아도 된다.
- 객체 지향
- 객체 지향 프로그래밍 기법(OOP : Object Oriented Programming)을 사용한다.
- 개발자가 만드는 모든 프로그래밍 코드들은 자동차의 부품(객체)처럼 따로 만들어져 하나의 조립되는 형태를 취한다 => 하나의 프로그램.
- 객체들은 서로 간에 독립적으로 동작, 서로에게 명령을 주고 받을 수 있는 인터페이스를 두어 유기적으로 동작.
- 네트워크를 통한 분산 환경 시스템 개발 지원
- 각종 네트워크에 관련된 라이브러리를 지원 => 서버-클라이언트 구조의 서비스 개발이 가능.
- 다른 컴퓨터에 있는 객체들을 원격으로 호출하여 사용할 수 있는 기능도 지원 됨(RMI)
- Java Virtual Machin (JVM)
- 자바 언어로 만들어진 프로그램은 운영체제와 직접적으로 동작하지 않고 중간에 JVM이라는 것을 통해 실행.
- C, C++로 만들어진 프로그램은 프로그램을 제품으로 만들 때 사용한 컴퓨터에서만 동작이 가능하지만 자바는 프로그램을 실행하는 프로그램(JVM)이 운영체제 별로 제공이 되고 개발자가 만든 프로그램은 이러한 JVM과의 연동을 통해 프로그램이 실행이 된다.
- 자바 개발 지원 사이트에서 다운로드가 가능하며 설치만 하면 됨.
- 개발자가 한번 만든 프로그램은 서로 다른 운영체제에서도 실행이 가능.
- 플랫폼 독립적
- JVM을 통해 각 운영체제에 맞게 각각의 제품을 만들어줄 필요가 없어짐.
- 프로그램은 JVM 위에서 동작을 하게 되어서 플랫폼에 독립적.
- 한번 만든 프로그램을 여러 운영체제에서 실행 시킬 수 있도록 제공되어짐.
- 다중 쓰레딩 제공
- 하나의 프로그램내에서 여러 개의 프로세서를 사용하여 동시에 여러 개의 작업을 수행할 수 있는 환경을 제공.
- 보안성
- Applet과 같은 프로그래밍 방식을 이용하면 실행되는 프로그램의 코드들은 서버 컴퓨터에 있고 프로그램 실행시 실행에 필요한 정보를 클라이언트 프로그램을 보내어 JVM을 통해 프로그램을 실행 시킬 수 있는 환경을 제공할 수 있다.
- 프로그램이 실행에 필요한 정보와 이러한 정보를 바탕으로 실행을 시키는 JVM을 분리하여 보안성을 향상.