1.1 프로그래밍 언어란
C/C++ ->(컴파일)-> 기계어(Intel 계열의 CPU)
1.2 자바란?
1.2.1 자바의 유래
유래 : 홈 네트워킹 - oak - java
1990년 후반 www이 활발해지면서 주목을 받게됨.
1.2.2 자바의 특징(네트워크에 적합)
1. 플랫폼이 독립적(운영체제에 독립적) → 이식성이 높은 언어
① "write once, run any where"
② jvm이 통역자 역할(OS에 관계없이 사용가능)
③ 소스파일 수정 없이, 자바실행 환경( JRE : Java Runtime Environment)이 설치 되어 있는 모든 OS에서 실행가능 → jdk(자바개발도구) > jre(자바실행환경) > jvm(자바가상머신)(일반적 윈도우 설치시 포함)
2. 객체지향 언어이다. (Object-Oriented)
(분석설계기법)
① OOP(Object Oriented Programing) : 데이터 흐름에 따라 프로그래밍
→ 부품에 해당하는 객체를 먼저 만듬, 이것들을 하나씩 조립 및 연결
② 시스템을 모듈화함으로 유지보수성 향상등의 특징
③ 실세계 ->(이전)-> 컴퓨터의세계
④ 객체지향 개념의 특징 : 상속, 캡슐화, 다형성
3. 함수적 스타일 코딩을 지원
① 대용량 데이터의 병렬처리 및 이벤트 지향 프로그래밍을 위해 적합
② 자바는 함수적프로그래밍을 위해 람다식을 자바8 부터 지원
4. 메모리를 자동으로 관리 → 가비지컬렉션(Garbage Collection)
① 이전 프로그래미가 처리했던 포인터 연산을 자바에서는 jvm이 처리함으로 사용하는 객체의 참조가 해제되면 가비지 컬렉션의 대상이 되고 소멸된다. (소멸시기는 예측할 수 없다.)
② 객체를 만들면 자바는 그 객체의 크기에 따라 힙안에 저장된 메모리 공간을 할당 후 jvm이 절대로 다시 쓰지 않을 것이라는 결론을 내릴 수 있으면 가비지 컬렉션의 대상이 된다. 그리고 메모리가 부족하게 되면 가비지 컬렉터가 작동하여 대상이 되는 객체를 제거한다.
③ 힙에서의 삶과 죽음
//Step 1.
Book b = new Book();
Book c = new Book();
//Book 레퍼런스 변수 두개를 선언 아울러 Book 객체 두개를 새로 생성
//그리고 Book 객체 두개를 새로 생성
//활성 레퍼런스 : 2개
//접근할 수 있는 객체 : 2개
//Step 2.
b=c;
//c의 값을 b에 대입
//c에 들어 있는 비트들을 복사한 다음 새로운 복사본을 b변수에 집어 넣음
//b와 c는 모두 같은 객체를 참조
//1번 객체는 버림 받았기 때문에 가비지 컬렉션의 대상
//활성 레퍼런스 : 2개
//접근할 수 있는 객체 : 1개
//버림 받은 객체 : 1개
//step 3.
c=null;
//c 변수에 null 값을 대입
//그러면 c가 null 레퍼런스가 됨
//그래도 c는 여전히 레퍼런스 변수고, 나중에는 다른 Book 객체 대입가능
//2번 객체는 여전히 활성레퍼런스(b)가 있으며,
//활성레퍼런스가 있는 한 가비지 컬렉션의 대상이 되진 않음
//활성 레퍼런스 : 1개
//null 레퍼런스 : 1개
//접근할 수 있는 객체 : 1개
//버림 받은 객체 : 1개
5. 다양한 Application을 개발 할 수 있다.
① 자바는 다양한 운영체제에서 사용할 수 있는 개발도구와 API를 묶어 에디션 형태로 정의
* JAVA SE(Standard Edition) - 기본 에디션
→ JAVA SE는 자바 프로그램들이 공통적으로 사용하는 자바 가상 기계(JVM:Java Virtual Machine)를 비롯해서 자바 프로그램 개발에 필수적인 도구와 라이브러리 API를 정의 한다. 클라이언트와 서버프로그램에 상관없이 자바 플그램을 개발하고 실행하기 위해서는 반드시 JAVA SE 구현체인 자바개발키트(JDK:Java Development Kit)를 설치해야 한다.
* JAVA EE(Enterprise Edition) - 서버용 어플리케이션 개발 에디션
→ JAVA EE는 분산환경(네트워크, 인터넷)에서 서버용 어플리케이션을 개발하기 위한 도구 및 라이브러리 API를 정의한다. 서버용 어플리케이션으로는 Servlet/JSP를 이용한 웹어플리케이션, 분산처리 컴포넌트인 EJB(Enterprise Java Bean) 그리고 XML 웹 서비스(Web Services)등이 있다.
6. 멀티 스레드(Multi-Thread)를 쉽게 구현
① 하나의 프로그램이 동시에 여러가지 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리하기 위해 서브작업으로 분리해서 병렬 처리하려면 멀티스레드 프로그래밍이 필요
② 서버의 자원을 효율적으로 사용함으로서 부하를 방지한다. (안정적인 서버운영 도와줌)
7. 동적로딩(Dynamic Loading)을 지원
① 자바는 동적로딩을 지원하기 때문에 실행시에 모든 클래스가 로딩되지 않고, 필요한 시점에 클래스를 로딩하여 사용할 수 있다. 그 외에도 일부 클래스가 변경되어도 전체 어플리케이션을 다시 컴파일 하지 않아도 되며, 어플리케이션의 변경 사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 어플리케이션을 작성할 수 있다.
8. 막강 오픈소스 라이브러리가 풍부
① 검증된 오픈소스 라이브러리를 사용하면 개발 시간을 단축하면서 아정성이 높은 어플리케이션 개발이 가능하다.
1.2.3 자바가상기계(JVM)
① JVM은 실 운영체제를 대신해서 자바 프로그램을 실행하는 가상 운영체제 역할
② 바이트 코드는 모든 JVM에서 동일한 실행 결과를 보장하지만, JVM은 운영체제에 종속적
→ 자바프로그램을 운영체제가 이해하는 기계어로 번역해서 실행하므로 JVM은 운영체제에 맞게 설치되어야 한다.
③ JVM 및 자바 프로그램 실행 단계
1.3 자바 개발 환경 구축
1.3.1 자바 개발도구(JDK) 설치
* JDK를 설치하면, 자바 가상 머신과 자바 클래스 라이브러리(JAVA API)외에 자바를 개발 하는데 필요한 프로그램들이 설치됨
- JRE = JVM + 표준 클래스 라이브러리
- JDK = JRE + 개발에 필요한 도구
① www.oracle.com에서서 jdk1.8 다운(OS의 bit에 맞게 다운로드)
② 환경설정 : 어디서나 컴파일 및 실행을 위해
내 컴퓨터 - 속성 - 고급시스템 설정 - 환경변수 - Path에 자신의 JDK Path 추가
③ Path에 ;C:\APP\Java\jdk1.8.0_25\bin 추가하기(JDK 설치 경로의 bin 폴더 까지)
④ cmd에서 javac, java 옵션 나오면 성공
(javac -version 입력시 "javac는 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치파일이 아닙니다." 출력시 Path 경로가 잘못 되어 있음)
1.3.2 API 도큐먼트
* 자바 프로그램을 개발하기 위해서는 JDK에서 제공하는 표준 클래스 라이브러리를 반드시 사용 해야함
→ API(Application Programming Interface) 라고 함 (다운로드 : http://docs.oracle.com/javase/8/docs/api)
1.4 자바 프로그램 개발 순서
1.4.1 소스 작성에서 부터 실행 까지
* Java 프로그램의 실행 과정
HelloWorld.java(개발자 작성) - javac HelloWorld.java(컴파일) - HelloWorld.class(실행 java HelloWorld)
* 소스파일이 만들어 지면 어휘 분석 후 구문 트리를 생성
*.java → compile → *.class
* Why Compile?
→ JVM이 알아 볼 수 있도록 기계어로 변환
- Error : 문법적 오류 / 예외 : 실행시 발생
* 내부적인 실행 순서
① 프로그램 실행에 필요한 클래스(*.class 파일)를 로드한다.
② 클래스 파일을 검사한다. (파일형식, 악성코드 체크)
③ 지정된 클래스(Hello)에서 main(String[] args)를 호출한다.
1.4.2 프로그램 소스 분석
* 클래스 : 필드 또는 메소드를 포함하는 블록
* 메소드 : 어떤 일을 처리하는 실행문들을 모아 놓은 블록
* main() 메소드 : 프로그램 실행 진입점(entry point)
1.5 주석과 실행문
1.5.1 주석 사용하기
// 한줄짜리 주석(행주석)
/*
* 여러줄 주석(범위 주석)
*/
/**
* 여러줄 주석 – html 문서(api documentation) 제작시 표현
*/
Ex) /** (* 2개 html 문서 만들 수 있음)
* public : 접근 제어자(access modifier)어디서나 접근가능
* String : 리턴 값이 있을 때 해당 데이터 타입을 명시
* getName : 메서드명 첫글자 소문자 합성어 첫글자 대문자
* () : 매개변수 없음
* Return name : 데이터를 리턴할 때 사용하는 자바 키워드
*/
1.5.2 실행문과 세미콜론(;)
* 실행문 : 변수 선언, 값 저장, 메소드 호출에 해당 하는 코드
실행문 마지막에 반드시 세미콜론(;)을 붙여서 실행문이 끝났음을 표시
1.6 이클립스 설치
1.6.1 이클립스 설치하기
① www.eclipse.org 접속
② 메인화면 – 오른쪽 download 클릭
③ Eclipse ide for java ee developers download
④ 압축해제 eclipse.exe 실행
→ 글모양/ 크기 (Window – Preferenece – General – Appearance – color and font)
→ 줄번호 (Window – Preferenece – General – Edior – Text Editor – Show line number)
→ JDK 설정
① Window – Preference – Java – Installed jre
- add 후 설치된 JDK 까지 Path를 잡으면 된다.
② Window – Preferenece – Java – Installed JRES –Execution Environment – JDK1.8 클릭