Java의 목표 (개발자 편의성)
1. WORA(write one run away)
여기까지 개발과정 | 인터프리팅
.java(source code) ---compile---> .class(byte code) ------ 실시간 코드 변환 ---------> 🖥️
중간 단계 코드 ------- 실시간 코드 변환 ---------> 🖥️
------ 실시간 코드 변환 ---------> 🖥️
🤔 인터프리팅이란 뭘까?
=> 프로그램이 소스 코드를 (전체가 아닌) 한 줄씩 읽고 실행한느 방식!
구분 인터프리터 컴파일러 실행방식 한 줄씩 번역하고 실행 전체 코드를 번역 후 실행 속도 실행 속도가 느림 실행 속도가 빠름 오류 발견 오류 발생시 즉시 감지 전체 컴파일 후 오류 감지
2. object-oriented(reuse)
소스코드를 가져오는건 Copy & Pasting 이라고 한다.
재사용이란 무엇인가? byte코드를 가져오는 것
재사용 내용을 잘 가져오는게 객체지향이다.
byte코드를 가져올때 하나씩보다는 묶어서 압축파일(아카이브)로 가져온다.
=> 자바에서는 아카이브를 가져온다
3. Thread-Multi 지원
웹 🖥️ --요청 → 실 = process단위
🖥️ --요청 → 행
🖥️ --요청 → 흐름
(실행흐름은 )process 단위는 컴퓨터에 자원을 공유하지 못한다.
thread 자원 공유 가능
자원이란? cpu, memory
4. Garbag-Collection
자동으로 메모리해제를 하는것
5. 보안 ↑
6. Exception 처리 ↑
exception == 오류
{exception이 일어나는 코드}를 묶어서 catch() { 복구 코드}
복구 코드가 하나도 없어도 exception이 일어날때 catch블록에 들어가 나온 JVM은 정상 실행이 된다.
Java Version
부가설명 | JDK 버전 | 출시 년도 | 주요 특징 |
JDK 알파 | 1995년 | 시험 버전으로서 기본 언어 기능 및 라이브러리 제공 | |
JDK 1.0 | 1996년 | 초기 버전으로서 기본 언어 기능 및 라이브러리 제공 | |
JDK 1.1 | 1997년 | 내부 클래스, 자바 빈즈, RMI(원격 메서드 호출) 추가 | |
Java 2 (기본) JavaSE (웹) JavaEE (모바일) JavaME |
JDK 1.2 | 1998년 | 컬렉션 프레임워크, Swing GUI 라이브러리 도입 |
J2SE1.3 | JDK 1.3 | 2000년 | HotSpot VM, JNDI, Java Naming and Directory Interface 도입 |
J2SE1.4 | JDK 1.4 | 2002년 | assert 문, NIO(새로운 I/O) 추가, XML 파서 개선 |
(그 전까지 개발자 편의성 ↑) 성능 향상 |
JDK 5 | 2004년 | 제네릭스, 애너테이션, 열거형, 자동 박싱/언박싱 등 추가 |
2005 안드로이드 JavaSE6 (Java는 JRE형태로 모바일에 어울리지 않는다.) |
JDK 6 | 2006년 | Scripting API, 자바 컴파일러 API, 플러그 가능한 애플리케이션 환경 도입 |
2008 sun (hw company) 망함 2010 oracle로 넘어 (sw company) |
JDK 7 | 2011년 | 다이아몬드 연산자, try-with-resources 문, 동적 언어 지원 추가 |
JDK 8 | 2014년 | 람다 표현식, 스트림 API, 날짜 및 시간 API 추가, Parallel GC. PermGen 제거 | |
JDK 9 | 2017년 | 모듈 시스템, JShell(대화형 셸), HTTP/2 지원 추가. G1 GC | |
JDK 10 | 2018년 | 지역 변수 형식 추론, 불필요한 비트 삭제, GC 인터페이스 개선 | |
JDK 11 | 2018년 | HTTP 클라이언트, 로컬 변수 문법 확장, Epsilon GC 추가 | |
JDK 12 | 2019년 | 신규 GC 알고리즘, Switch 표현식 개선 | |
JDK 13 | 2019년 | 텍스트 블록, Switch 표현식 추가 개선 | |
JDK 14 | 2020년 | Pattern Matching, Record, Switch 표현식 개선 | |
JDK 15 | 2020년 | Sealed 클래스, Hidden 클래스 추가 | |
JDK 16 | 2021년 | 패턴 매칭 개선, UNIX 소켓 채널 API 개선 | |
JDK 17 | 2021년 | Sealed 클래스 개선, 패턴 매칭 개선, Foreign Function & Memory API 추가. ZGC | |
JDK 18 | 2022년 | 자바 API의 기본 Charset이 UTF-8으로 지정. 정적 파일을 서빙하는 기능만 있는 심플한 웹 서버 제공 (커맨드라인 툴) | |
JDK 19 | 2022년 9월 | switch문의 패턴 매칭 (세 번째 프리뷰). 멀티쓰레드 프로그래밍을 단순화하는 Structured Concurrency API (인큐베이터 단계) | |
JDK 20 | 2023년 3월 | switch문 패턴 매칭 (네 번째 프리뷰). Structured Concurrency (두 번째 인큐베이터 단계) | |
JDK 21 | 2023년 9월 | JavaScript 나 C# 등에서도 변수나 식을 주입할 수 있는 특수 문자열 문법. switch 문의 패턴 매칭 정식 출시. Windows 32-bit x86 제거 예정. 차세대 ZGC |
Java
웹을 타겟으로 한 범용 언어
이름 옆에 소괄호 있으면 메서드 그리고 {} 정의 ;있으면 호출
.앞은 소유주
public class Test {
public static void main(String[] args) {
// System.out.println("양세현");
// 저장하는 순간 javac생성됨
//console창에 terminated : 실행이 되었다는 의미
System.out.print("hello 세현"); // hello 세현
}
}
println은 out이라는 메서드이다. out이 system이다.
main과 파라미터는 고정되어있다.
javax로 시작하면 java2 이후로 출시, 확장 package를 의미
java 프로그램 단위 2개임
java 프로그램의 기본 단위는 class
타입이나 구현, 확장, 상속을 정의를 하고 싶으면 interface
데이터와 메서드로 구성
소스파일의 이름은 클래스 명으로 짓는다.
자바에서는 독립적인 메서드가 없다.
public class Test {
public static void main(String[] a) {
System.out.print(a[0]);
System.out.print("hello 세현"); // hello 세현
System.out.println(10);
System.out.println(true);
System.out.println('예');
}
}
자바는 ' '-> 단일 문자
주석은 //
자바는 타입이 정해져있다. 타입이 없는 변수느 없다.
자바 데이터타입
자바의 데이터 타입은 2가지 유형밖에 없다.
Primitive(기본형) | Reference(참조) | <- 얼만큼 데이터를 넣었냐에 따라 byte가 달라진다. | |||
숫자형 | 단일문자형 | 논리형 | 사용자가 정의하는 데이터타입 | ||
정수형 | 실수형 | (class, interface, enum) | |||
byte(1byte) | float(소수 7자리까지 가능) (4byte) | char (2byte) | boolean (1byte) | String, System | |
short(2byte) | Object | ||||
int(4byte) (default value) |
double(소수 10자리까지 가능) (8byte) (default value) | PrintStream | |||
long (8byte) | ... |
실행 메커니즘
💭 알듯말듯 어렵다.
데이터 타입
package com.ysh.basic;
public class MyProfile{
public static void main(String[] args ) {
int age = 30;
double tall = 160.5;
char gender = '여';
boolean isPretty = true;
System.out.println(age);
}
}
모든 참조형 데이터를 표현할때는 new를 표시한다.
💭 BAHAHAHAHAHA..어렵다..
'💡 URECA' 카테고리의 다른 글
[URECA] DAY11 | 자바(3) (0) | 2025.02.10 |
---|---|
[URECA] DAY 10 | 자바(2) (1) | 2025.02.07 |
[URECA] DAY08 | TS(2) (0) | 2025.02.05 |
[Day 07] JS(4), TS(1) (1) | 2025.02.04 |
[URECA] DAY 6 | JavaScript(3) (1) | 2025.02.03 |