자바(Java) 언어
- 1995년 썬마이크로시스템즈(Sun Microsystems)에서 최초 발표한 언어
- 1991년 가전 제품에서 사용할 목적인 오크(Oak) 언어에서부터 시작
- 인터넷 프로그래밍 언어로 발전하면서 자바라는 이름으로 변경
- 2010년 오라클에서 썬을 인수하여 Java 개발,관리,배포 주관
자바 언어의 특징
- 플랫폼 독립적 (CPU나 운영체제에 상관없이 실행)
- 이식성이 높은 언어
- WORA(Write Once Run Anywhere)
- 진정한 의미의 객체 지향 언어(클래스, 상속, 다형성, 캡슐화 등)
- 멀티쓰레드 지원(하나의 프로그램 내에서 여러 작업 동시 수행 개념)
- 동적 로딩(Dynamic Loading) 지원
- 미리 객체를 만들어 놓지 않고 필요한 시점에 동적 로딩해 객체 생성
- 유지 보수 시 특정 객체만 쉽게 수정 및 교체해 사용메모리 사용량이 적고 메모리 관리 문제 해결
- GC(Garbage Collector : 쓰레기 처리기)가 메모리 해제의 모든 것 처리
- 메모리를 자동으로 관리
- 사용하지 않는 객체를 자동으로 메모리에서 제거
- 핵심 기능 코드에 집중할 수 있도록 하는 기능
- 막강한 오픈 소스 라이브러리 풍부
- java.exe 명령어에 의해 구동
- 바이트 코드를 기계어로 변환시키고 실행
- 각 운영체제에 맞는 자바 가상 기계(JVM) 실행
- 운영체제에 종속적
- CPU나 운영체제에 상관없이 실행
- 한번 작성한 프로그램은 모든 플랫폼에서 실행 가능
- 소스 코드(.java)를 입력하고 컴파일하면
- 바이트 코드 형태의 클래스 파일(.class) 생성
- (바이트 코드 : 특정 하드웨어가 아닌 가상 컴퓨터에서 실행되는 프로그램을 위한 이진 코드)
- 자바 가상 기계(JVM)라는 가상의 CPU가 실행을 맡고 실제 CPU에게 처리를 맡김
- 런타임(실행할 때) 필요한 클래스들이 자바 가상 기계에 의해 링크되고, 클래스 로더가 동적으로 필요한 클래스 로드
- PC 등의 데스크톱 컴퓨터에 설치되어 단독으로 실행
- 자바 실행 환경(JRE)이 설치된 어떤 컴퓨터에서도 실행
- 예: 이클립스, 게임 등
- 웹 페이지에 내장되어 실행
- 단독으로 실행될 수 없고 웹 브라우저에 의해 구동되고 실행 제어
- 웹 서버에서 클라이언트 사용자 컴퓨터로 다운로드 되어 사용자 컴퓨터에 설치된 웹 브라우저에 의해 실행
- 사용자에게 GUI 환경을 제공하는 간단한 기능 구현
- 애플릿을 실행하기 위해서는 자바 가상 기계가 있어야 함
- 서버에서 실행되는 서버용 자바 프로그램으로 웹 서버에 의해 실행 제어
- 웹 브라우저 상에서 실행되는 애플릿이나 자바 스크립트 코드와 통신
- 데이터베이스나 다른 서버와 연동하여 대규모 복잡한 응용프로그램 구현에 사용
- 자바는 플랫폼 독립적, 적은 메모리 사용, 통신 환경 지원하도록 설계되어 있기 때문에
- 다양한 하드웨어, 소프트웨어 플랫폼을 갖는 모바일 기기에 적합
- 다양한 모바일 응용프로그램 개발에 사용
- 안드로이드
■ 구글의 주도하에 여러 모바일 회사가 모여 구성한 OHA(Open Handset Alliance)에서 개발한 무료 모바일 플랫폼
- Java ME (모바일 기기용 배포 판)
■ 게임, 임베디드 및 가전제품, 멀티미디어 응용프로그램 작성에 사용
- 자바 응용프로그램을 개발하고 실행하는데 필요한 총체적 환경
- 다운로드 및 설치 / 환경 변수 설정
- 자바 통합 개발 환경 (IDE : Integrated Development Environment)
- 오픈 소스 소프트웨어로 무료 다운로드 사용
- 다운로드 / 설치 사용
JDK (Java Development Kit) 구성 내용
자바 응용프로그램을 개발하는데 필요한 도구
컴파일 : 고급언어를 컴퓨터가 이해할 수 있는 기계어로 변환
컴파일러 : 컴파일을 수행하는 프로그램
자바 가상 기계 (Java Virtual Machine – JVM)
자바 응용프로그램이 실행될 때 필요
JRE (Java Run-time Environment)
표준 클래스 파일 포함
JDK의 bin 디렉터리에 exe 파일로 포함
javac :자바 소스를 바이트 코드로 변환하는 컴파일러
java : 자바 응용프로그램 실행
javadoc : HTML 형태의 API 도큐먼트 생성
jar : 자바 클래스 파일을 압축한 JAR 파일 생성 관리
jdb : 실행 중 오류를 찾는데 사용하는 디버거
- 자바에서 서로 관련된 클래스들을 분류하여 묶어 놓은 것
- import하여 사용
- 주요 기능들을 미리 구현한 클래스 라이브러리로 묶어 놓은 패키지들
- API를 이용하여 쉽고 빠르게 자바 프로그램 개발
- JDK에서 제공하는 표준 클래스 라이브러리 설명해 놓은 HTML 페이지들
자바 프로그램 작성 순서
(1) 프로젝트 생성
자바 소스 파일, 리소스(이미지, 동영상 등), 클래스 파일 등 관리
메뉴 : File / New / Java Project
Project name : TestProject (대문자 시작)
Module : Create module-info java file 체크 해제
Finish
(2) (패키지 추가 후) 자바 클래스 추가
패키지 생성하지 않을 시 클래스 생성 : default package 사용
메뉴 : New / Class
Name : Test (대문자로 시작)
main() 메소드 포함
public static void main(String[] args) 체크
Finish
(3) 코드 입력
System.out.println(“test 입니다”);
(4) 실행 / 결과 확인
- 메뉴 : Run / Run
- 콘솔창에 출력 : test 입니다
소스 작성에서 실행까지 과정
- 자바 응용프로그램 실행은 main()부터 시작
- 프로그램을 실행할 때 ‘java.exe’에 의해 호출될 수 있도록 미리 약속된 부분
- public static void main(String[] args)
- 항상 동일하게 작성
public
- 다른 클래스에서 main() 메소드에 접근 허용 (실행 시 자바 가상 기계가 호출할 수 있도록 접근 허용)
static
- 객체 생성(인스턴스) 생성하지 않고도 호출 가능
- main() 메소드가 포함된 클래스의 객체(인스턴스)가 생성되기 전에 자바 가상 기계가 호출해야 하므로 static으로 선언)
void
- 반환(return)값 없음을 의미
- 작업 수행하고 메소드 종료
(String[] args)
n main() 호출하면서 전달되는 값을 받는 매개변수로 문자열 배열
- 하나의 클래스에 main() 메소드는 하나만 존재
- 클래스마다 main() 메소드 존재할 수 있지만
- .java 파일명과 동일한 public 클래스의 main()에서부터 실행 시작
하나의 java 파일에 여러 개의 클래스 존재 가능
public 클래스는 하나만 존재 – 이 public 클래스 이름이 파일명이 됨
- 프로그램에 대한 설명문 (컴파일러가 무시)
- 프로그램 실행에 영향 없음
- 코드가 1줄인 경우 주석 : //
- 여러 행인 경우 주석 : /* ……. */
- 블록 주석 설정 : Ctrl + Shift + /
- 블록 주석 해제 : Ctrl + Shift + \
블록 주석 시 자동 정렬되는 문제
- 블록 주석 시 포맷팅 적용하지 않도록 설정
- Window / Preferences
- Java / Code Style / Formatter
- New : NewProfile 생성 [OK]
- Comments / Enable block comment formatting 체크 해제
- 프로그램에 관한 정보를 추가할 수 있다
- 수정이 용이하다
- 가독성을 높여 준다
- 코드를 이해하기 쉽다
- 다른 사람이 작성한 코드를 쉽게 해석할 수 있다
- 문장의 끝을 표시하기 위해 세미콜론(;) 사용
- 한 문장을 여러 줄로 작성할 수 있지만- ;을 만날 때 문장 끝으로 인식
- 클래스, 메소드, 반복문, 조건문에서 영역 범위 표시
public class Hello {
}
public static void main(String[] args) {
}
에러와 해결 방법
- 콘솔(Console) 창에 에러 메시지 출력
- 읽어 보고 라인 클릭해서 오류 처리