01. 프로그램이란 무엇인가?
참고로 내가 공부하고 있는 교재는 인피니티북스 출판사에서 출간한 파워 자바 2판이다.
암사자를 겉표지에 장식한 이유는 뭘까?
그 의문을 뒤로하고 책장을 넘기면, 가장 먼저 나오는 챕터는 자바 소개이다.
CH01 자바소개
01. 프로그램이란 무엇인가?
Q) 컴퓨터가 범용성을 가질 수 있는 근본 이유는 무엇인가?
A) 프로그램(program) 덕분이다.
+ 프로그램은 컴퓨터를 위한 작업 지시서로서 구체적으로 컴퓨터가 특정한 작업을 하기 위한 명령어들의 리스트
+ 명령어(instruction)란 CPU(컴퓨터의 중앙처리장치)가 수행하는 기초적인 연산들
+ 프로그램 덕분에 컴퓨터로 노래도 듣고, 영화도 보고, 문서작업도 가능하고, 게임도 가능하다.
02. 프로그래밍 언어
Q) 컴퓨터가 이해할 수 있는 언어는?
A) 기계어
+ 기계어는 프로그램이 CPU에 내리는 명령들을 표현하며, 0과 1로 이루어져 있다.
Q) 프로그래밍 언어를 기계어로 변환 시켜주는 프로그램은?
A) 컴파일러
+ 기계어를 인간이 이해하기는 어렵다. 그래서 좀더 쉬운 언어가 필요했는데, 이것이 프로그래밍 언어이다. 하지만 앞서 언급한것 처럼 컴퓨터는 기계어 밖에 모른다. 그래서 프로그래밍 언어를 기계어로 번역해줄 필요가 있다. 그러한 역할을 하는 프로그램이 컴파일러 이다.
03. 자바의 기초 개념
Q) 자바 컴파일러가 소스 코드를 컴파일하면?
A) 바이트 코드(byte code)가 생성된다.
+ 보통의 프로그램 언어의 경우, 소스코드가 컴파일러에 의해 기계어로 변환되면 컴퓨터에서 바로 실행가능하다. 하지만 자바 컴파일러는 바로 컴퓨터를 위한 코드를 생성하지 않고, 바이트 코드를 생성하는데, 이 바이트 코드가 다시 자바 가상 기계(Java virtual machine)라고 하는 소프트웨어에 의해 해석되어 실행된다. 이렇게 복잡한 과정을 거치는 이유는 모든 컴퓨터에서 실행되게 하기 위해서이다. 이것이 자바의 가장 큰 특징 중 하나이다.
04. 자바의 역사
Q) 자바를 만든 사람은?
A) Sun의 제임스 고슬링(James Gosling)을 비롯한 Green 연구팀
+ Green 연구팀은 원래 가정용 전자제품을 더 똑똑하게 만들고 다른 가전 제품과 통신을 할 수 있는 기능을 만들려고 했다. 그런데 C++(프로그래밍 언어의 하나)의 복잡도로 인해 실패하고, 더 나은 언어를 직접 만들게 되는데 이것이 바로 자바이다. 그래서 자바는 간단하고, 버그가 없으며, 네트워크 기능을 내장한 프로그램을 작성하는 언어를 목표로 하였다. 또한 객체 지향 프로그래밍 언어로 설계되었으며 다른 객체 지향 언어보다는 쉽게 배울수 있도록 설계되었다. 그러던 1993년, 그래픽 기반의 월드 와이드 웹(WWW)이 발표되고 자바가 이러한 웹 기반의 응용프로그램에 이상적이라는 것을 발견하게 되었다. 이후 자바는 폭발적인 인기와 더불어 많은 발전을 거듭하여 왔다.
▲ 파워 자바 2판 p.11 그림 1-7
05. 자바의 특징
+ 자바소스 → 컴파일러→ 바이트 코드 → 각종 가상 기계
+ 자바와 다른 프로그래밍 언어의 가장 큰 차이점은 인터넷 홈페이지 상에서 실행이 가능하고 어떤 컴퓨터 기종에서도 실행이 가능하다는 점이다.
+ 이것을 잘 설명하는 문장이 "한 번만 작성하고 모든 곳에서 실행시키세요(Write Once, Run Everywhere)" 라는 슬로건 이다.
■ 단순하지만 강력하다.
+ 자바는 C++에서 출발했지만 자바는 꼭 필요로 하는 기능만을 포함시키고 복잡하고 많이 쓰이지 않는 기능을 삭제했다.
■ 객체 지향적이다.
+ 객체 지향은 객체별로 코드를 작성하고 객체들을 조합하여 전체 프로그램을 완성하는 프로그램 설계 방법론
+ 객체 지향 개념을 사용하면 작성된 코드를 재사용하기가 쉬워서, 보다 빠르고 신뢰성 있는 프로그램을 만들 수 있다.
■ 분산 환경 지원
+ 자바는 네트워크상에서 동작되는 것을 기본으로 설계된 언어
+ 네트워크 상에서 URL을 이용하여 객체에 접근하여 사용할 수 있다.
■ 안전하다.
+ 자바는 네트워크 환경에서 운영되는 언어이므로 다른 언어보다 안전성에 대한 중요성이 요구된다. 자바 코드는 바이러스, 파일의 삭제나 수정, 데이터 파괴 작업이나 컴퓨터 오류 연산 등을 방지하면서 실행되도록 설계되었다.
■ 컴퓨터 구조에 중립적이다.
+ 자바 컴파일러는 컴퓨터 구조에 중립적인 바이트 코드로 번역한다. 바이트 코드는 각 컴퓨터에 설치된 자바 가상 기계에 의하여 기계어로 번역되는데, 이러한 구조 덕분에 어떤 컴퓨터에서도 사용할 수 있다.
■ 고성능이다.
+ 자바는 매 실행 마다 바이트 코드를 해석하여야 하기 때문에 다른 프로그래밍 언어보다 느린편이다. 그래서 이러한 단점을 보완하기 위해 JIT(just-in-time) 컴파일러의 개념을 도입했다. JIT 컴파일러는 자바 코드를 실제 컴퓨터의 기계어로 직접 변환하는 컴파일러로서 인터프리트 과정없이 프로그램이 직접 실행될 수 있도록 만든다. 최근에는 JIT 컴파일러의 성능 향상으로 기존의 다른 언어의 컴파일러들과 대등한 실행 속도를 보이기도 한다.
■ 멀티스레딩 지원
+ 자바는 언어 수준에서 멀티스레딩(multithreading)을 지원한다.
■ 기타 장점
+ 자바는 C나 C++보다 쉽게 배울 수 있다.
06. 자바의 에디션
■ Java SE(Standard Edition) = JSE
+ 자바 언어의 핵심 기능을 제공한다.
+ 개인 PC용 이라고 생각해도 무방
■ Java EE(Enterprise Edition) = JEE
+ 기업용 애플리케이션을 개발하는 데 필요한 여러 가지 도구 및 라이브러리들을 모아 놓은것
■ Java ME(Micro Edition) = JME
+ 모바일 기기나 다른 임베디드 장치들에서 실행되는 애플리케이션을 위한 환경을 제공한다.
07. 자바로 만들 수 있는 것들
■ 자바 애플리케이션(Java application)
+ 독립적으로 실행될 수 있는 일반 응용 프로그램
■ 자바 애플릿(Java applet)
+ 웹 브라우저 안에서 실행되는 프로그램
■ 자바 서블릿(Java servlet)
+ 웹 서버에서 동작하는 서버 모듈
+ 클라이언트의 요청을 받아 그에 대한 처리를 하고, 그 결과를 HTML 형태로 클라이언트의 컴퓨터에 전송
■ JSP(Java Server Page)
+ 자바를 기반으로 동적인 웹페이지를 구축할 수 있는 서버-사이드 스크립트 언어
+ 자바 서블릿을 기반으로 함
■ 자바 빈즈(Java Beans)
■ 안드로이드 애플리케이션
+ 운영 체제를 제외한 안드로이드 SDK의 나머지 부분을 모두 자바로 작성
'Java > Java 공부' 카테고리의 다른 글
연산자 (operator) (0) | 2016.07.18 |
---|---|
변수 (variable) (0) | 2016.07.18 |
Java Programming basic (0) | 2016.07.18 |
이클립스 (Eclipse) 설치 (1) | 2016.07.18 |
Java 개발 도구 설치 (0) | 2016.07.18 |