일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Writeup
- 동적타이핑
- 개인정보보호위원회
- 백엔드
- 가명정보처리
- 유클리드_알고리즘
- package.json
- 포너블
- 웹 프레임워크
- 개인정보안전성
- 마감임박
- function scope
- 디오판투스 알고리즘
- 국가인적자원개발컨소시엄
- 호이스팅
- 백엔드입문
- 한국정보보호산업협회기자단
- 모듈러 연산
- pwnable.tw
- 개인정보보호교육
- 개인정보보호
- 한국산업인력공단
- 덧셈 암호
- 확장 유클리드 알고리즘
- package-lock.json
- 곱셈 암호
- 무료교육
- 한국정보보호산업협회
- node.js
- arrow function
- Today
- Total
짱짱해커가 되고 싶은 나
ch.1 introduction to java 본문
1.1 Java : programming platform
자바는 단순한 언어가 아니라 하나의 소프트웨어 베이스 플랫폼이다.
ex) graphic, networking, database 등에서 거대한 라이브러리가 재사용이 가능하다.
ex) 다른 OS 간 이식성 및 자동 garbage collection 등의 환경 제공
∴ Java의 구문과(Syntax) 의미(Semantic)는 C++보다 명확.
Wriete Once and Run Anywhere
1.2 The White paper
White paper : Java 작성자는 실행환경 등을 white paper에 작성함으로써 그들의 성과를 설명.
1. Simple : syntax와 semtantic은 c++보다 더 명확하다.
(포인터 산술X : explicit pointer, operation overloading .. X, automatic garage collection : 자동으로 메모리 할당 해지)
2. Object-oriendted : c 같은 structed-oriented가 아니다.
3. Distributed(networking) : remoted method invocation(원격 함수 호출)을 위한 internet programming.
4. Robust : compiler가 JVM 이전에 에러를 감지하기 때문에 잘못된 포인터로 인한 memory leak X.
5. Secure : networking가 distributed environment를 위한 것이기 때문에.
(명시된 포인터가 없으며, JVM 샌드박스 안에서 프로그램을 실행하기 때문에)
6. Architecture-neutral : byte code를 사용하기 때문에.
7. Portable : byte code를 사용하기 때문에.
8. Interpreted : just-in-time 컴파일러.
9. High-performance : just-in-time 컴파일러 때문에.
10. Multithreaded : 멀티프로세서에서 프로그램 작성.
11. Dynamic : 데이터 유형은 컴파일 타임보다 런타임으로 결정.
Java Bytecode : JVM 실행하는 명령어 집합. 컴파일 시 생성되는 클래스 파일에 존재.
bytecode 파일들은 OS나 개발환경에 관계없이 같은 명령어 집합을 사용.
JVM 아키텍처에는 두 종류의 컴파일러가 존재한다.
1. javac (JDK 기본 컴파일러) : 자바 코드->자바 클래스 파일(바이트 코드 생성)
2. JRE(더 나은 최적화를 위한 컴파일러) ex. JIT 컴파일러
JVM은 동적으로 바이트코드를 읽으며 인터프리팅을 수행. 이 단계에서 JIT 컴파일러는 자바 애플리케이션의 성능향상을 위해 동적 컴파일을 통해 machine code로 컴파일 가능한 코드를 한 번 더 컴파일.
1.4 History of Java
1991 : Project Green - James GOsling
Oak -> Java
1998 : standard edtion(SE) - 1.ME(embedded device) 2.EE(server side processing)
1.5 Common Misconceptions About Java
- HTML/XML의 확장.
HTML : web page XML : data format JAVA : programming
- 배우기 쉬운 언어.
- 모든 플랫폼에서 보편적인 프로그래밍 언어의 가능성.
backend system와 Android application에서 가장 보편적으로 사용됨
- just 프로그래밍 언어.
다른 언어보다 훨씬 많은 지원 시스템 존재
- proprietary(독점적)이기 때문에 이는 피해야 함.
open source
- interpreted로 인해 심각한 application에서는 너무 느림.
JIT 컴파일러는 C++만큼 빠르고 때로는 더 빠르기도 함
- Java program은 모두 web page 내에서 작동.
applet은 웹페이지에서 실행되지만 java program의 대부분은 server/mobile/embedded devices에서 실행
- Java program은 security risk가 크다.
applet의 security risk는 그렇지만, 일반적인 Java는 매우 안전하다.
- JavaScript는 Java의 simple version이다.
Javascript는 마케팅 이유로 Java의 이름을 따왔지만, 이는 web page에 사용되는 스크립트 언어다
- Java를 사용하면 데스크탑 컴퓨터를 저렴한 인터넷 기기로 교체할 수 있다.
20년 전의 기대였고 이는 오늘날에 현실이다. ex)Android smart phone, tablet이 desktop을 대체하고 있다
'programming > java' 카테고리의 다른 글
Ch.4 Objects and classes (2) (0) | 2019.10.09 |
---|---|
Ch4. Objects and Classes (1) (0) | 2019.10.09 |
Ch3. Fundamental programming structures in Java (2) (0) | 2019.10.08 |
Ch3. Fundamental programming structures in Java (1) (0) | 2019.10.08 |
Ch2. Java programming environment (0) | 2019.10.07 |