자바의 가장 큰 장점
Write once, Run everywhere! ( 한 번 작성하면 어디서든 실행된다 )
자바의 특징
- 단순하지만 강력하다
- 꼭 필요로 하는 기능만을 포함시키고 복잡하고 많이 쓰이지 않는 기능은 삭제
- 포인터 연산, 연산자 오버로딩, 다중 상속 등의 복잡한 기능을 삭제
- 자동 메모리 관리 기능, 멀티 스레드, 방대한 라이브러리 제공
- 객체 지향적이다
- 객체 지향은 지난 30년간의 연구를 통하여 그 가치를 입증한, 프로그램을 설계하는 방법론
- 기본 데이터 타입을 제외한 거의 모든 것이 객체로 표현
- 분산 환경 지원
- 네트워크상에서 동작되는 것을 기본으로 설계
- 쉽게 네트워크 관련 프로그램을 개발
- 견고하다
- 오류를 만들 수 있는 원인들을 제거
- (예) 포인터 개념을 삭제하였으며 컴파일시에 강력하게 데이터 타입을 검사
- 안전하다
- 바이러스, 파일의 삭제나 수정, 데이터 파괴 작업이나 컴퓨터 오류 연산 등을 방지하면서 실행되도록 설계되었다.
- 컴퓨터 구조에 중립적이다
- 컴퓨터 구조에 중립적인 바이트 코드로 번역
- 이러한 바이트 코드 특성 때문에 인터넷에 연결된 서로 다른 기종의 컴퓨터에서도 자바는 실행될 수 있다.
- 멀티스레딩 지원
- 자바는 언어 수준에서 멀티스레딩(multithreading)을 지원
- 멀티스레딩이란 많은 작업을 동시에 실행
- 동적이다(Dynamic)
- 라이브러리들은 실행 파일에 영향을 끼치지 않고 자유롭게 새로운 기능들을 추가할 수 있다.
- 자바는 실행되기 직전에 라이브러리를 동적으로 링크하므로 실행할 때 변경된 라이브러리가 자동적으로 참조된다.
- 기타 장점
- 비교적 배우기 쉽고 특히 C언어를 이미 학습하였다면 더욱 쉽다.
- 자바 웹 스타트(Java Web Start) 소프트웨어를 사용하면 제작된 응용프로그램을 한 번의 마우스 클릭으로 실행
자바 가상 기계(JVM)
자바 프로그램의 실행 환경을 제공하여 특정 운영체제에 종속되지 않고 어디서든 실행 가능하도록 합니다.
자바의 JVM(Java Virtual Machine)은 자바 프로그램을 실행하기 위한 가상 머신입니다. JVM은 자바 프로그램을 컴파일하여 생성된 바이트 코드를 실행하고 해당 바이트 코드를 기계어로 변환합니다.
자바 에디션 종류
- Java SE(Standard Edition)
- 데스크탑과 서버에서 자바 애플리케이션을 개발하고 실행할 수 있게 해주며 임베디드 환경(embedded environment)과 실시간 환경(real-Time environments)도 지원
- Java EE(Enterprise Edition)
- 대규모 애플리케이션 개발을 위한 플랫폼으로, 기업 환경에서 사용되는 다양한 기능과 서비스를 제공
- Java ME(Micro Edition)
- 모바일 기기와 임베디드 시스템에서 동작하는 애플리케이션을 개발하기 위한 플랫폼
자바 애플리케이션(Java application)
- 독립적으로 실행될 수 있는 일반 응용 프로그램
자바 애플릿(Java applet)
- 웹 브라우저 안에서 실행되는 작은 프로그램이다.
자바 서블릿(Java servlet)
- 웹 서버에서 동작하는 서버 모듈로서 클라이언트의 요구를 받아서 그에 대한 처리를 한 후에, 실행 결과를 HTML 문서 형태로 클라이언트 컴퓨터로 전송
- 애플릿과 서블릿을 비교하여 보자.
- 애플릿: 서버에서 다운로드되어 웹 페이지 안에서 실행
- 서블릿: 웹 서버 안에서 사용자의 요청을 처리
- JSP에 대하여 웹을 통하여 조사하여 보자.
- JavaServer Pages (JSP)는 서버 측의 자바 기술로서 클라이언트 컴퓨터의 요청에 따라서 동적으로, HTML, XML 등이 포함된 웹 페이지를 생성한다.
- JSP는 HTML 안에 자바 코드를 넣으면 웹페이지를 사용자와 상호작용하도록 만들 수 있다. JSP는 서버에서 실행되고 결과를 사용자에게 보여준다.
안드로이드는 달빅(Davlik)
JRE(Java Runtime Environment):
- 자바 프로그램을 실행하기 위한 라이브러리, 자바 가상기계, 기타 컴포넌트 제공
JDK(Java Development Kit):
- JRE에 추가로 자바 프로그램을 개발하는데 필요한 컴파일러, 디버거 등의 개발 도구 제공
중간점검
JDK
- JRE는 자바 프로그램을 실행만 시킬 수 있는 환경이고, JDK는 개발도 할 수 있는 환경이다.
자바 프로그램 개발 단계
- 소스 파일(.java 확장자) 작성
- 컴파일: 자바 소스 코드를 바이트 코드로 변환, .class 파일에 저장
- 클래스 적재: 바이트 코드 파일을 메모리에 적재, 네트워크를 통해 적재될 수도 있음
- 바이트 코드 검증: 바이트 코드의 이상 여부와 자바의 보안 규칙 검사
- 실행: 자바 가상 기계가 바이트 코드를 실행, HotSpot에서는 JIT 컴파일러가 기계어로 변환하여 실행
통합 개발 환경
- 소스 에디터, 컴파일러, 디버거 등이 결합된 개발 환경
- 비주얼 개발 도구를 포함할 수도 있음 (예: 이클립스, 넷빈스)
- 통합 개발 환경은 내부적으로 명령어 도구를 사용하여 자바 가상 기계를 구현
자바 API 문서: 자바 라이브러리에 대한 설명 문서
자바 튜토리얼: 자바 언어에 대한 강좌
javac
Hello.class
Java
- 자바API
- 자바 튜토리얼
자바 프로그램 예제
주석
프로그램에 대한 설명을 적어 넣은 것
/* text */
/* 에서 */ 까지가 주석으로서 컴파일 시에 무시된다.
/** documentation */
/** 에서 / 까지가 주석으로서 컴파일 시에 무시되는 것은 같으나 이 주석은 선언문 앞에서만 사용할 수 있고 JDK에 포함된 javadoc 프로그램이 /* */ 까지의 내용을 가지고 주석을 추출하여 자동적으로 소스를 설명하는 HTML 문서를 만들어줍니다.
// text
// 에서 줄의 끝까지가 무시된다.
클래스
- 클래스: 객체를 만드는 설계도, 자바 프로그램은 클래스들로 구성됨
- 자바 프로그램은 클래스들로 구성됩니다.
- 클래스 = 필드(변수) + 메소드(함수) 로 구성됩니다.
메소드
- 메소드는 입력을 받아 작업을 수행하고 결과를 반환하는 작은 기계
- 메소드는 안에 들어 있는 문장들을 차례대로 실행한 후에 작업의 결과를 외부로 반환
public class Hello {
public static void main(String args[]) {System.out.println("Hello World!");
}
}
- public : 누구나 이용할 수 있다는 의미(private 등등 여러가지 접근 지정자 있음)
- static : 정적메소드(사용하지 않더라도 클래스가 메모리에 올라갈 때 자동적으로 생성)
- void : 반환값이 없음
- Main : 메소드 이름
- String args[] : 매개 변수 (메소드가 외부에서 받는 데이터)
문장
문장(statement)은 사용자가 컴퓨터에게 작업을 지시하는 단위이다.
- 문장들은 메소드 안에 정의된다
- 보통 프로그램의 한 줄이 하나의 문장이 된다
- 문장의 끝은 항상 세미클론(;) 으로 끝나게 된다
- 문장은 순차적으로 실행되어진다.
클래스
주석
메서드
.java
변수
변수(variable)란 프로그램이 사용하는 데이터를 일시적으로 저장할 목적으로 사용하는 메모리 공간
- 자바는 변수에 자료형을 지정해주어야한다.
상수
상수(constant)란 그 값이 프로그램이 실행하는 동안 변하지 않는 수
변수 초기화
수식
피연산자와 연산자로 이루어진다, 수식은 결과값을 가짐
대입 연산자
대입 연산자 == 할당 연산자 == 배정 연산자
변수에 값을 저장하는 연산자이다
x = 100; // 예
산술 연산자
- 사칙 연산(+, -, *, /)과 나머지 연산(%), 증감 연산자(++, --) 등이 존재한다
import 문장
import java.util.Scanner; // Scanner 클래스 문장
- 해당 import 문은 Scanner 클래스를 포함시키는 문장
- Scanner는 입력을 받을 때 사용하는 클래스
객체 생성
위에서 불러온 Scanner의 객채를 생성해 봅시다.
Scanner input = new Scanner(System.io);
- input은 자료형이 Scanner인 변수
- new Scanner(System.io) 는 Scanner 클래스의 객체(object) 생성
- input은 생성된 객체를 가리킨다.
객체 사용법
int x = input.nextInt();
위와 같이 객체를 가리키는 변수에 “.” 을 하여 메소드를 호출하여 사용을 합니다.
위의 코드는 정수를 입력받아 int x 에 대입하는 코드입니다.
자바의 가장 큰 장점
Write once, Run everywhere! ( 한 번 작성하면 어디서든 실행된다 )
자바의 특징
- 단순하지만 강력하다
- 꼭 필요로 하는 기능만을 포함시키고 복잡하고 많이 쓰이지 않는 기능은 삭제
- 포인터 연산, 연산자 오버로딩, 다중 상속 등의 복잡한 기능을 삭제
- 자동 메모리 관리 기능, 멀티 스레드, 방대한 라이브러리 제공
- 객체 지향적이다
- 객체 지향은 지난 30년간의 연구를 통하여 그 가치를 입증한, 프로그램을 설계하는 방법론
- 기본 데이터 타입을 제외한 거의 모든 것이 객체로 표현
- 분산 환경 지원
- 네트워크상에서 동작되는 것을 기본으로 설계
- 쉽게 네트워크 관련 프로그램을 개발
- 견고하다
- 오류를 만들 수 있는 원인들을 제거
- (예) 포인터 개념을 삭제하였으며 컴파일시에 강력하게 데이터 타입을 검사
- 안전하다
- 바이러스, 파일의 삭제나 수정, 데이터 파괴 작업이나 컴퓨터 오류 연산 등을 방지하면서 실행되도록 설계되었다.
- 컴퓨터 구조에 중립적이다
- 컴퓨터 구조에 중립적인 바이트 코드로 번역
- 이러한 바이트 코드 특성 때문에 인터넷에 연결된 서로 다른 기종의 컴퓨터에서도 자바는 실행될 수 있다.
- 멀티스레딩 지원
- 자바는 언어 수준에서 멀티스레딩(multithreading)을 지원
- 멀티스레딩이란 많은 작업을 동시에 실행
- 동적이다(Dynamic)
- 라이브러리들은 실행 파일에 영향을 끼치지 않고 자유롭게 새로운 기능들을 추가할 수 있다.
- 자바는 실행되기 직전에 라이브러리를 동적으로 링크하므로 실행할 때 변경된 라이브러리가 자동적으로 참조된다.
- 기타 장점
- 비교적 배우기 쉽고 특히 C언어를 이미 학습하였다면 더욱 쉽다.
- 자바 웹 스타트(Java Web Start) 소프트웨어를 사용하면 제작된 응용프로그램을 한 번의 마우스 클릭으로 실행
자바 가상 기계(JVM)
자바 프로그램의 실행 환경을 제공하여 특정 운영체제에 종속되지 않고 어디서든 실행 가능하도록 합니다.
자바의 JVM(Java Virtual Machine)은 자바 프로그램을 실행하기 위한 가상 머신입니다. JVM은 자바 프로그램을 컴파일하여 생성된 바이트 코드를 실행하고 해당 바이트 코드를 기계어로 변환합니다.
자바 에디션 종류
- Java SE(Standard Edition)
- 데스크탑과 서버에서 자바 애플리케이션을 개발하고 실행할 수 있게 해주며 임베디드 환경(embedded environment)과 실시간 환경(real-Time environments)도 지원
- Java EE(Enterprise Edition)
- 대규모 애플리케이션 개발을 위한 플랫폼으로, 기업 환경에서 사용되는 다양한 기능과 서비스를 제공
- Java ME(Micro Edition)
- 모바일 기기와 임베디드 시스템에서 동작하는 애플리케이션을 개발하기 위한 플랫폼
자바 애플리케이션(Java application)
- 독립적으로 실행될 수 있는 일반 응용 프로그램
자바 애플릿(Java applet)
- 웹 브라우저 안에서 실행되는 작은 프로그램이다.
자바 서블릿(Java servlet)
- 웹 서버에서 동작하는 서버 모듈로서 클라이언트의 요구를 받아서 그에 대한 처리를 한 후에, 실행 결과를 HTML 문서 형태로 클라이언트 컴퓨터로 전송
- 애플릿과 서블릿을 비교하여 보자.
- 애플릿: 서버에서 다운로드되어 웹 페이지 안에서 실행
- 서블릿: 웹 서버 안에서 사용자의 요청을 처리
- JSP에 대하여 웹을 통하여 조사하여 보자.
- JavaServer Pages (JSP)는 서버 측의 자바 기술로서 클라이언트 컴퓨터의 요청에 따라서 동적으로, HTML, XML 등이 포함된 웹 페이지를 생성한다.
- JSP는 HTML 안에 자바 코드를 넣으면 웹페이지를 사용자와 상호작용하도록 만들 수 있다. JSP는 서버에서 실행되고 결과를 사용자에게 보여준다.
안드로이드는 달빅(Davlik)
JRE(Java Runtime Environment):
- 자바 프로그램을 실행하기 위한 라이브러리, 자바 가상기계, 기타 컴포넌트 제공
JDK(Java Development Kit):
- JRE에 추가로 자바 프로그램을 개발하는데 필요한 컴파일러, 디버거 등의 개발 도구 제공
중간점검
JDK
- JRE는 자바 프로그램을 실행만 시킬 수 있는 환경이고, JDK는 개발도 할 수 있는 환경이다.
자바 프로그램 개발 단계
- 소스 파일(.java 확장자) 작성
- 컴파일: 자바 소스 코드를 바이트 코드로 변환, .class 파일에 저장
- 클래스 적재: 바이트 코드 파일을 메모리에 적재, 네트워크를 통해 적재될 수도 있음
- 바이트 코드 검증: 바이트 코드의 이상 여부와 자바의 보안 규칙 검사
- 실행: 자바 가상 기계가 바이트 코드를 실행, HotSpot에서는 JIT 컴파일러가 기계어로 변환하여 실행
통합 개발 환경
- 소스 에디터, 컴파일러, 디버거 등이 결합된 개발 환경
- 비주얼 개발 도구를 포함할 수도 있음 (예: 이클립스, 넷빈스)
- 통합 개발 환경은 내부적으로 명령어 도구를 사용하여 자바 가상 기계를 구현
자바 API 문서: 자바 라이브러리에 대한 설명 문서
자바 튜토리얼: 자바 언어에 대한 강좌
javac
Hello.class
Java
- 자바API
- 자바 튜토리얼
자바 프로그램 예제
주석
프로그램에 대한 설명을 적어 넣은 것
/* text */
/* 에서 */ 까지가 주석으로서 컴파일 시에 무시된다.
/** documentation */
/** 에서 / 까지가 주석으로서 컴파일 시에 무시되는 것은 같으나 이 주석은 선언문 앞에서만 사용할 수 있고 JDK에 포함된 javadoc 프로그램이 /* */ 까지의 내용을 가지고 주석을 추출하여 자동적으로 소스를 설명하는 HTML 문서를 만들어줍니다.
// text
// 에서 줄의 끝까지가 무시된다.
클래스
- 클래스: 객체를 만드는 설계도, 자바 프로그램은 클래스들로 구성됨
- 자바 프로그램은 클래스들로 구성됩니다.
- 클래스 = 필드(변수) + 메소드(함수) 로 구성됩니다.
메소드
- 메소드는 입력을 받아 작업을 수행하고 결과를 반환하는 작은 기계
- 메소드는 안에 들어 있는 문장들을 차례대로 실행한 후에 작업의 결과를 외부로 반환
public class Hello {
public static void main(String args[]) {System.out.println("Hello World!");
}
}
- public : 누구나 이용할 수 있다는 의미(private 등등 여러가지 접근 지정자 있음)
- static : 정적메소드(사용하지 않더라도 클래스가 메모리에 올라갈 때 자동적으로 생성)
- void : 반환값이 없음
- Main : 메소드 이름
- String args[] : 매개 변수 (메소드가 외부에서 받는 데이터)
문장
문장(statement)은 사용자가 컴퓨터에게 작업을 지시하는 단위이다.
- 문장들은 메소드 안에 정의된다
- 보통 프로그램의 한 줄이 하나의 문장이 된다
- 문장의 끝은 항상 세미클론(;) 으로 끝나게 된다
- 문장은 순차적으로 실행되어진다.
클래스
주석
메서드
.java
변수
변수(variable)란 프로그램이 사용하는 데이터를 일시적으로 저장할 목적으로 사용하는 메모리 공간
- 자바는 변수에 자료형을 지정해주어야한다.
상수
상수(constant)란 그 값이 프로그램이 실행하는 동안 변하지 않는 수
변수 초기화
수식
피연산자와 연산자로 이루어진다, 수식은 결과값을 가짐
대입 연산자
대입 연산자 == 할당 연산자 == 배정 연산자
변수에 값을 저장하는 연산자이다
x = 100; // 예
산술 연산자
- 사칙 연산(+, -, *, /)과 나머지 연산(%), 증감 연산자(++, --) 등이 존재한다
import 문장
import java.util.Scanner; // Scanner 클래스 문장
- 해당 import 문은 Scanner 클래스를 포함시키는 문장
- Scanner는 입력을 받을 때 사용하는 클래스
객체 생성
위에서 불러온 Scanner의 객채를 생성해 봅시다.
Scanner input = new Scanner(System.io);
- input은 자료형이 Scanner인 변수
- new Scanner(System.io) 는 Scanner 클래스의 객체(object) 생성
- input은 생성된 객체를 가리킨다.
객체 사용법
int x = input.nextInt();
위와 같이 객체를 가리키는 변수에 “.” 을 하여 메소드를 호출하여 사용을 합니다.
위의 코드는 정수를 입력받아 int x 에 대입하는 코드입니다.