프로그래밍 언어의 역할?
사람의 언어와 기계어 사이에서 번역자와 같은 역할
고급언어, 저급언어로 구분
프로그래밍 언어
- 기계어
0,1로 구성, 컴퓨터의 CPU는 기계어만 이해 가능
- 어셈블리어
기계어 명령을 ADD, SUB, MOVE등과 같은 표현하기 쉬운 상징적인 단어인 니모닉 기호로 일대일 대응시킨 언어
- 고급언어
사람이 이해하기 쉬우며, 복잡한 작업, 자료 구조, 알고리즘을 표현하기 위해 고안된 언어
절차 지향 언어와 객체 지향 언어로 나뉨
소스와 컴파일
소스: 프로그래밍 언어로 작성된 텍스트 파일
컴파일: 소스 파일을 컴퓨터가 이해할 수 있는 기계어로 만드는 과정
윈도우기준(맥은 리눅스처럼 실행권한 O)
C: .c -> .obj -> .exe
자바: .java -> .class
C++: .cpp -> .obj -> .exe
지금 배우는 자바는 !!!!!
자바소스파일 (.java) 가
컴파일러 (javac.exe)를 통해
바이트코드파일 (.class) 가
자바 가상 기계 (java.exe)를 통해
기계어가 되어 실행됨 !!!
자바 가상머신
장점: 하드웨어나 운영체제를 가리지 않고 어디서나 동일한 프로그램을 실행
단점: 최적화된 바이너리에 비해 속도가 느릴 수 있고, 각 플랫폼에서 가상머신의 개발이 필요
자바의 특징
- WORA(Write Once Run Anywhere!!!)
자바 가상 기계가 설치된 모든 컴퓨터에서 실행 (OS, H/W에 상관없음)
+반대되는 개념: 플랫폼 종속성
C와 같은 프로그램은 컴파일을 통해 기계어로 바꾸는데,
이때 기계어가 CPU마다 다르고, 운영체제마다 API(Application Programming Interface)가 다르고, 운영체제마다 실행파일 형식이 다르기에 다른 환경에서 실행을 하고 싶어도 실행이 안됨.
- 객체 지향 언어 (Object Oriented Programmin)
부품 객체 만들고 조합해 프로그램 완성
->캡슐화,상속,다형성 완벽 지원
- 함수적 스타일 코딩 지원
람다식 지원 -> 코드 간결하게 작성, 컬렉션 요소를 필터링, 매핑, 그룹핑, 집계 처리 시 주로 사용
- 메모리 자동 관리
사용하지 않는 객체 자동으로 메모리에서 제거 -> 핵심 기능 코드에 집중 가능
- 다양한 애플리케이션 개발 가능
- 멀티스레드 쉽게 구현 가능
동시 여러 작업, 대용량 작업 빨리 처리할 경우
- 동적 로딩 지원
미리 객체 만들지 x, 필요한 시점에 동적 로딩해 객체 생성
유지 보수 시 특정 객체만 쉽게 수정 및 교체 가능
- 막강한 오픈 소스 라이브러리 풍부
자바 플랫폼
자바 프로그램이 실행되는 특정 환경, 가상머신+API로 구성
다양한 환경의 IT 시스템을 구축해야 하는 개발자와 사용자의 운영 환경에 따라 세분화
개발 분야에 따라 1.JAVA SE 2.JAVA ME 3.JAVA EE 4.JAVA Card, Java TV등으로 구분
-JDK:자바 프로그램 개발에 필요한 구성 요소 (컴파일러, 컴파일된 자바 API 클래스들이 들어 있는 모듈 파일, 샘플들) jdk는 jre+개발도구
-JRE:자바 프로그램 실행에 필요한 구성 요소 (JVM포함, 컴파일된 자바 API들이 들어있는 모듈 파일)
-API:자바 응용 프로그램 개발에 사용하는 라이브러리
기억해야할점
- 플랫폼 독립성
자바 프로그램은 플랫폼에 상관없이 어디서든 실행 가능
- 클래스로 캡슐화
클래스 내 모든 변수(필드), 함수(메소드) 구현해야 함
클래스 안에서 새로운 클래스(내부 클래스)작성 가능
- 소스와 클래스 파일
소스 파일 이름과 public으로 선언된 클래스 이름은 같아야함
= Hello.java의 코드 헤더는 public class Hello{...}
- 실행 코드 배포
실행코드는 한 개의 class파일이나 다수의 class파일로 구성
여러 폴더에 걸쳐 다수의 클래스 파일로 구성된 경우 jar파일의 형태로 배포 가능
자바 응용프로그램의 실행은 main()메소드에서 시작하며 하나의 클래스에 하나 이하의 main()메소드가 존재해야함
- 패키지
관련된 여러 클래스를 하나의 패키지로 관리 (폴더 개념)
알아두면 좋은 것들 !
javac: 자바 소스를 바이트 코드로 변환하는 컴파일러
java: 자바 응용프로그램 실행기, 자바 가상 기계를 작동시켜 자바 프로그램 실행
javadoc: 자바 소스로부터 HTML 형식의 API document생성
jar: 자바 클래스들을 압축한 자바 아카이브 파일 생성
jmod: 자바 모듈 파일 만들거나 모듈 파일 내용 출력
jlink: 응용프로그램에 맞춘 맞춤형 JRE 제공
jdb: 자바 응용프로그램의 실행 중 오류를 찾는데 사용하는 디버거
javap: 클래스 파일의 바이트 코드를 소스와 함께 보여주는 디어셈블러
주석문:
//
/*
~~~~~
*/
실행문:
변수 선언, 값 저장, 메소드 호출에 해당하는 코드
실행문 끝에는 반드시 세미콜론 붙여 끝 표시