본문 바로가기

Computer Sience/Java33

[JAVA] 자바, JVM, JDK, JRE JVM (Java Virtual Machine) 자바 가상 머신으로 자바 바이트 코드 (.class 파일)를 OS에 특화된 코드로 변환(인터프리터 JIT 컴파일러)하여 실행한다.바이트 코드를 실행하는 표준(JVM 자체는 표준)이자 구현체(특정 밴더가 구현한 JVM)이다. JVM 밴더: 오라클, 아마존, Azul, ...JVM 스팩: https://docs.oracle.com/javase/specs/jvms/se11/html/특정 플랫폼에 종속적이다.자바 컴파일 과정자바 소스 코드 (.java 파일)자바로 작성한 코드를 컴파일러(Javac)를 사용하여 바이트 코드로 변환바이트 코드 (.class 파일).java에서 바이트 코드로 변환하여 생성된 파일은 OS에 독립적인 바이트 코드 형식을 가지고 있다. 즉,.. 2024. 10. 8.
[JAVA8] 애노테이션의 변화 목차 자바 8부터 애노테이션을 타입 선언부에도 사용할 수 있다.자바 8부터 애노테이션 중복 사용이 가능하다 자바 8부터 애노테이션을 타입 선언부에도 사용할 수 있다. 타입 선언부: 타입 파라미터 / 타입   타입 파라미터와 타입의 차이  타입 파라미터: 제네릭 클래스나 메소드에서 동적으로 타입을 지정하기 위해 사용하는 매개변수이다.컴파일 시점에 구체적인 타입으로 대체된다.타입: 구체적인 데이터 타입이다. 예를 들어, String, Integer, List 등은 타입이다. 이는 타입 파라미터가 대체되는 구체적인 타입이 된다. 타입 파라미터에 적용  → ElementType.TYPE_PARAMETER@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE_.. 2024. 10. 7.
[JAVA] Annotation 목차 10분 테코톡 초롱의 애노테이션 남궁성 자바의 정석 애노테이션 10분 테코톡 초롱의 애노테이션 우리가 흔히 사용하는 @Override, @Test, @Controller 등등.. 도대체 어떻게 동작하는 걸까? @Controller @Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Componentpublic @interface Controller { /** * Alias for {@link Component#value}. */ @AliasFor(annotation = Component.class) String value() default "";} @Override@Target(ElementType.METHOD)@Ret.. 2024. 10. 7.
[JAVA8] CompletableFuture 목차자바 Concurrent 프로그래밍 ExecutorsCallable과 FutureCompletableFuture자바 Concurrent 프로그래밍 Concurent 소프트웨어?동시에 여러 작업을 할 수 있는 소프트웨어 예) 웹 브라우저로 유투브를 보면서 키보드로 문서에 타이핑을 할 수 있다. 동시성을 활용한 소프트웨어동시성(Concurrency): 여러 작업이 동시에 실행되는 것처럼 보이도록 프로그램을 작성하는 개념, 실제로는 단일 또는 다중 CPU에서 여러 작업이 교차적(컨텍스트 스위칭)으로 실행 자바에서 지원하는 Concurrent멀티프로세싱 (ProcessBuilder)멀티쓰레드 자바 멀티쓰레드 프로그래밍Thread / Runnable스레드 이름 출력  public static void main.. 2024. 10. 4.
[JAVA8] Date & Time 목차자바 8에 새로운 날짜와 시간 API가 생긴 이유 자바 8에서 제공하는 Date-Time API 특징 주요 APIAPI 연습 참고 자료  자바 8에 새로운 날짜와 시간 API가 생긴 이유 그전까지 사용하던 날짜 시간 클래스들은 문제점이 많다.  클래스 이름이 명확하지 않다. Date인데 시간까지 다룬다.public class Practice { public static void main(String[] args) throws InterruptedException{ Date date = new Date(); long time = date.getTime(); // Date(날짜)에서 시간을 가져온다고? GregorianCalendar myBirth.. 2024. 10. 3.
[JAVA8] Optional 목차Optional 등장 배경 Optional 주의 사항 Optional API 참고 자료Optional 등장 배경 자바 프로그래밍에서 NullPointerException을 종종 보게 되는 이유 public class Progress { private Duration studyDuration; private boolean finished; public Duration getStudyDuration() { return studyDuration; } public void setStudyDuration(Duration studyDuration) { this.studyDuration = studyDuration; }}public class OnlineC.. 2024. 10. 3.