일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 알고리즘
- 수술영상 분류
- LaMa2
- 앱인벤터 TinyDB
- 앱인벤터 구구단
- 앱인벤터 어플만들기
- 앱인벤터 기초
- 알고리즘 이론
- 퀵정렬
- 데이터베이스
- LLM 논문
- LLM 논문리뷰
- 앱인벤터
- 분할정복 알고리즘
- c#
- 알고리즘 공부
- 수술영상 phase recognition
- 분할정복
- 그리디 알고리즘
- medical AI
- 동적계획 알고리즘
- timestamp supervision
- 최소 신장 트리
- C#으로 알고리즘 구현
- TooLLLM_facilitating Large Language Models to Maset 16000+ Real-World APIs
- 이클립스 DB연동
- 오라클로 배우는 데이터베이스 개론과 실습 2판
- MySQL 연동
- 재귀함수
- 앱인벤터 앱만들기
- Today
- Total
YJ_Scribbles
#01_자바의 시작 본문
명품 Java programming교재를 바탕으로 수업내용을 정리함.
01.1 프로그래밍 언어
★ 프로그래밍 언어
● 프로그램 작성 언어
● 기계어(machine language)
ㅇ 0, 1의 이진수로 구성된 언어
ㅇ 컴퓨터의 CPU는 기계어만 이해하고 처리가능
● 어셈블리어
ㅇ 기계어 명령을 ADD, SUB, MOVE 등과 같은 표현하기 쉬운 상징적인 단어인 니모닉 기호(mnenomic symbol)로 일대일 대응시킨 언어
● 고급언어
ㅇ 사람이 이해하기 쉽고, 복잡한 작업, 자료 구조, 알고리즘을 표현하기 위해 고안된 언어
ㅇ Pascal, Basic, C/C++, Java, C#
ㅇ 절차 지향 언어와 객체 지향 언어
★ 컴파일
● 소스 : 프로그래밍 언어로 작성된 텍스트 파일
● 컴파일 : 소스 파일을 컴퓨터가 이해할 수 있는 기계어로 만드는 과정
ㅇ 소스 파일 확장자와 컴파일된 파일의 확장자
- 자바 : .java -> .class
- C : .c -> .obj -> .exe
- C++ : .cpp -> .obj -> .exe
01.2 자바의 출현과 WORA
★ 자바의 태동
● 1991년 그린 프로젝트(Green Project)
ㅇ 선마이크로시스템즈(오라클에서 인수)의 제임스 고슬링(James Gosling)에 의해 시작
- 가전 제품에 들어갈 소프트웨어를 위해 개발
ㅇ 1995년 자바를 발표
● 목적
ㅇ 플랫폼 호환성 문제 해결
- 기존 언어로 작성된 프로그램은 PC, 유닉스, 메인 프레임 등 플랫폼 간에 호환성이 없음
- 소스를 다시 컴파일하거나 프로그램을 재작성해야하는 단점이 있음
ㅇ 플랫폼 독립적인 언어 개발
- 모든 플랫폼에서 호환성을 갖는 프로그래밍 언어 필요
- 네트워크, 특히 웹에 최적화된 프로그래밍 언어의 필요성 대두
ㅇ 메모리 사용이 적고 다양한 플랫폼을 가지는 가전 제품에 적용
● 초기이름 : 오크(OAK)
ㅇ 인터넷과 웹의 엄청난 발전에 힘입어 퍼지게 됨
ㅇ (Java) : 개발자들이 너무 커피를 많이 마셨다는 설이 유력
ㅇ (Java) : 개발팀의 핵심멤버의 이니셜을 따왔다는 설
★ WORA
● WORA(Write Once Run Anywhere)
ㅇ 한 번 작성된 코드는 모든 플랫폼에서 바로 실행
ㅇ C/C++ 등 기존 언어가 가진 플랫폼 종속성(platform dependence)을 극복
- 운영체제나 하드웨어에 상관없이 동일하게 실행 가능
ㅇ 네트워크에 연결된 어느 클라이언트에서나 실행 가능
- 웹 브라우저, 분산 환경의 지원
★ 자바의 특징
● 바이트 코드(byte code)
ㅇ 자바 소스를 컴파일한 목적 코드
ㅇ CPU와 관계없는 바이너리(binary code)
ㅇ JVM(자바 가상 기계)에 의해 해석되고 실행
ㅇ JVM(자바 가상 기계)가 인터프리터 방식으로 바이트 코드 해석
ㅇ 클래스 파일(.class)에 저장됨
● JVM(Java Virtual Machine) = 자바 가상 기계
ㅇ 자바 바이트 코드를 실행하는 자바 가상 기계(소프트웨어)
ㅇ 동일한 자바 실행 환경 제공
ㅇ 자바 가상 기계 자체는 플랫폼에 종속적
★ 자바와 C/C++ 실행 환경 및 과정
● 자바
ㅇ 컴파일러가 바로 바이트 코드를 생성하며, 링크 과정이 없다
ㅇ 바이트코드는 자바 가상 기계에서만 실행 가능하다
ㅇ 실행시간에 필요한 클래스들이 JVM에 의해 링크되면 클래스 로더가 필요한 클래스를 동적으로 로딩한다
ㅇ ClassLoader 객체를 이용하여 개발자가 직접 클래스를 로딩할 수도 있다
● C/C++
ㅇ 컴퍼일
- C/C++에서는 컴파일러가 중간 단계인 목적 코드 생성됨
ㅇ 링크
- 링커가 목적 코드와 라이브러리 연결, 실행 가능한 최종 실행 파일 생성됨
- 정적 라이브러리의 경우 실행 파일에 포함됨(실행 파일 크기가 커짐)
- 동적 라이브럴리의 경우 실행 시간에 링크가 일어남
ㅇ 목적 코드 및 실행 파일은 플랫폼에 따라 다름
- 플랫폼이 바뀌면 소스 코드를 수정하거나, 컴파일과 링크를 새로 해야함
01_3 개발 도구와 자바 플랫폼
★ JDK와 JRE
● JDK(Java Development Kit)
ㅇ 자바 응용 개발 환경, 개발에 필요한 도구 포함
● JRE(Java Runtime Environment)
ㅇ 자바 실행 환경, JVM 포함
ㅇ 컴파일된 자바 API들이 들어 있는 모듈 파일
ㅇ 개발자가 아닌 일반 사용자의 경우 JRE만 필요하며, JRE만 따로 다운 가능
★ 자바 API
● 자바 API란?
ㅇ 개발자들이 사용하도록 미리 만들어놓은 유용한 자바 클래스들의 집합
● 자바 패키지(package)
ㅇ 서로 관련된 클래스들을 분류하여 묶어 놓은 것
ㅇ 계층구조로 되어 있음
- 클래스의 이름에 패키지 이름도 포함
- 다른 패키지에 동일한 이름의 클래스 존재 가능
ㅇ 자바 API(클래스 라이브러리)는 JDK에 패키지 형태로 제공
- 필요한 클래스가 속한 패키지만 import하여 사용
ㅇ 개발자 자신의 패키지 생성 가능
★ 자바 IDE
● IDE(Integrated Development Enviroment)란?
ㅇ 통합 개발 환경(소프트웨어)
ㅇ 소스 코드 편집, 컴파일, 디버깅을 한꺼번에 할 수 있는 개발 환경
● 이클립스(eclipse)
ㅇ 자바 응용 프로그램 개발을 위한 통합 개발 환경
ㅇ IBM에 의해 개발된 오픈 소스 소프트웨어
ㅇ http://www.eclipse.org/downloads/ 에서 다운로드 가능
01_4 자바 프로그램 개발
★ 자바 소스 편집
- 클래스 이름과 소스파일의 이름이 일치해야함
- 어떤 편집기를 사용해도 무관(메모장에서도 가능)
● public class Hello 2030
ㅇ 클래스 선언문
ㅇ 이름이 "Hello 2030"인 클래스 선언
ㅇ 모든 클래스는 '{'으로 시작하여 '}'으로 끝남
ㅇ 자바는 하나 이상의 클래스로 구성
● public static void main(String[] args)
ㅇ main() 메소드(함수)를 선언하는 코드
ㅇ 자바 프로그램 시작은 main() 메소드
ㅇ 메소드는 '{'으로 시작하여 '}'으로 끝남
● int n = 2030;
ㅇ 지역 변수 n을 선언하고 2030으로 초기화
● System.out.println("헬로"+ n);
ㅇ 화면에 "헬로2030"을 출력
★ Java 설치
-
Java 다운 및 설치
-
JDK 다운 및 설치
-
eclipse 다운 및 설치
● Java 다운 및 설치
1. 구글에 Java 검색
2. "무료 Java 소프트웨어 다운로드"클릭
3. "무료 Java 다운로드"클릭 후 다운로드 및 설치 진행
● JDK 다운 및 설치
1. 구글에 "JDK"검색
2. Java SE - Downloads 클릭
3. JDK Downloads 클릭
4. 자신의 컴퓨터 사양에 맞는 파일 설치
5. 환경변수 설정하기
https://jhnyang.tistory.com/224 링크 참조
● eclipse 다운받기
1. http://www.eclipse.org/downloads/ 에서 다운로드
2. 설치파일 다운로드 후 실행
3. "Ec;ipse IDE for Java Developers" 클릭
LAUNCH 클릭
01_5 이클립스를 이용한 자바 프로그램 개발
★ 새 프로젝트 만들기
"File - New - Java Project"로 들어가서 새 프로젝트를 만든다
project name은 원하는 것으로 지정하고 Finish를 누른다
당분간은 모듈을 사용하지 않으려고 한다(Java를 시작할때에는 다소 어렵다고 해서)
다음과 같이 빈 화면이 나온다면 빨간색으로 표시된 부분을 누르면 아래와 같은 화면이 뜬다
"src위에서 마우스 오른쪽을 누름 - New - Class" 클릭
1번 : Class name설정 -> 첫글자를 대문자로 설정해주어야함
2번 : main으로 불러오는 클래스인지를 설정하는 부분
(현재는 class가 하나라 체크해야하지만 나중에 클래스가 여러개일 경우에는 필요한 class에서만 체크해주면 됨)
마지막으로 Finish를 눌러주면 아래와 같은 화면이 뜬다
빈 화면에 위에서 배운 내용을 입력해준다
System.out.println("Hello World!");
입력을 완료한 후에는 1번과 2번을 순서대로 클릭한다
다음과 같이 하게 되면 Console창에 다음과 같이 "Hello World!"라고 뜨게 된다.
01_6 자바의 특징
★ 플랫폼 독립성
- 플랫폼에 종속되지 않는 독립적인 바이트 코드로 컴파일되기 때문에 자바 가상 기계(JVM)만 있으면 실행 가능
★ 객체 지향
- 캡슐화, 상속, 다형성을 지원
- 해결할 과제를 객체 간의 상호 관계로 모델링하여 인간의 사고에 가깝게 표현
★ 클래스로 캡슐화
- 캡슐화(encapsulation) 원칙을 철저히 지켜, 변수나 메소드는 반드시 클래스 내에 구현
★ 소스와 클래스 파일
- 클래스 파일(.class)에는 반드시 하나의 자바 클래스만 있음
- 하나의 자바 소스 파일에 여러 개의 클래스를 작성한 경우, 클래스마다 별도의 클래스 파일 생성
- 하나의 자바 소스 파일에 작성된 클래스 중 오진 한 클래스만 public으로 선언 가능
-> public으로 선언된 클래스의 이름으로 자바 소스 파일을 저장해야함
★ 실행 코드 배포
★ 패키지
★ 멀티스레드
★ 가비지 컬렉션
★ 실시간 응용 시스템에 부적합
★ 자바 프로그램은 안전함
★ 프로그램 작성이 쉬움
★ 실행 속도를 개선하기 위해 JIT컴파일러가 사용됨