반응형

프로그래밍 공부/JAVA 16

GC(Garbage Collection)란?

본 포스팅은 우아한 테크코스 테코톡을 기반으로 작성되었습니다. https://www.youtube.com/watch?v=8JrciOSL3Gk&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=4 GC란? 메모리 해제 방법 C언어에서는 객체를 할당 하고 해제하기 위해서는 free라는 메소드를 직접적으로 호출하여 메모리를 해제하는 과정이 필요했습니다. 하지만, JAVA에서는 해당 메소드가 존재하지 않습니다. JAVA에서는 메모리를 해제하는 과정을 누군가가 대신 해준다는 얘기입니다. 이러한 역할을 JAVA GC가 대신합니다. Garbage Collector 역할 Root set JVM내의 Heap 영역, Method Area, JNI 영역에 있는 지역 변수나 파라미터 그리고 정..

애너테이션(어노테이션)

포스팅은 유튜브 자바의 정석 - 기초편 강의에 기반하여 작성되었습니다. 자바 강의의 모든 내용이 적힌것이 아닌 복습시 놓쳤던 부분을 하나하나 정리한 내용입니다. https://www.youtube.com/watch?v=i4V8ZI9Undc 애너테이션이란? - 주석처럼 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보를 제공 예전으로.. 이전에는 .java파일과 그에대한 설명이 적힌 문서 파일을 따로 생성했어야만 했다. 주석의 탄생배경 java파일이 ver1.5로 변경되었는데 개발자의 실수로 문서의 버전은 ver1.1인채로 머물러있게 되는 상황이 생긴다. 결국 관리가 되지않는 현상이 발생합니다. 그래서 두가지를 합쳐서 하나로 만들게됩니다.(javadoc.exe) 애너테이션의 탄생 배경 소스코드 (.ja..

바이트코드란? JVM이란? JIT컴파일러란? GC란? JVM 실행과정

학습 목표 JVM에 대하여 제대로 알기 자바 소스파일 .java를 JVM으로 실행하는 과정 살펴보기 목차 바이트코드란? JVM이란? JVM 구성요소 GC란?(링크참조) JIT 컴파일러란 무엇이며 어떻게 동작하는지 자바 소스파일(.java)을 JVM으로 실행 과정 컴파일 하는방법 컴파일 후 실행하는 방법 더 자세히 알아보기 바이너리코드와 바이트코드란 무엇인가 프로그램을 실행하는 것은 컴퓨터이다. 즉, 프로그램은 컴퓨터가 이해할 수 있는 형태로 작성되어 있어야 한다. 1) 바이너리 코드란? C언어는 컴파일러에 의해 소스파일(.c)이 목적파일(.obj)로 변환될 때 0과 1로 이루어진 바이너리코드로 변환된다. 즉, 컴파일 후에 이미 컴퓨터가 이해할 수 있는 이진(바이너리)코드로 변환되는 것이다. 목적파일은 기..

빌드와 실행, Ant, Maven, Gradle 이란 무엇인가?

Gradle에 대해서 더 자세히 알아보기 전, 간단하게 정리하였습니다. Gradle에 대한 포스팅은 Gradle 카테고리에 올라갈 예정입니다. 간단한 이론만 정리한 포스팅이니 참고용으로만 봐주시면 됩니다. 빌드(build) 소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립 SW 가공물로 변환시키는 과정 빌드란 단순히 실행하는 것과 다르다 ※독립 SW 가공물 = Artifact 빌드의 세분화 소스 코드를 컴파일 한다 테스트 코드를 컴파일 한다 테스트 코드를 실행한다 테스트 코드 리포트를 작성한다 기타 추가 설정한 작업들을 진행한다(소나 큐브에 코드 정적분석을 맡기는 등) 패키징을 수행한다 최종 SW 결과물(Artifact)을 만들어 낸다 테스트 코드 : 사용하고 있는 비지니스 로직이 새로운 요구사항이 반영..

JDK, JRE, JVM은 무엇인가?

JVM에 대해서 더 자세히 알아보기 전, 관련된 JDK, JRE의 기본적인 부분까지 간단하게 정리하였습니다. JVM에 대한 포스팅은 후에 올라갈 예정입니다. 간단한 이론만 정리한 포스팅이니 참고용으로만 봐주시면 됩니다. 컴퓨터는 0과 1밖에 모른다. 그런데 어떻게 컴퓨터는 해당 코드를 실행할 수 있을까? public static void main(Stirng[] args) { System.out.println("Hello World"); } 바로 이 코드가 0,1로 바뀐 다음에(컴파일) 그 바뀐 코드를 컴퓨터가 알아듣기 때문이다. 컴파일(compile) : 사람이 알아보는 코드를 컴퓨터가 알 수 있게 0,1로 바꿔준다. 여기서 0,1로 바뀐 코드를 바이트 코드(바이너리 코드)라고 한다 바이너리는 두가지의..

JAVA중급강의 정리 람다식

본 포스팅은 프로그래머스 자바 중급 강의에 기반하여 작성되었습니다. 자바 강의의 모든 내용이 적힌것이 아닌 복습시 놓쳤던 부분을 하나하나 정리한 내용입니다. JAVA8에서 새롭게 추가된 문법 람다식 람다식 람다식은 다른말로 익명 메소드라고도 한다. 인터페이스 중에서 메소드를 하나만 가지고 있는 인터페이스를 함수형 인터페이스라고 한다. 예를들어 쓰레드를 만들때 사용하는 Runnable 인터페이스의 경우 run()메소드를 하나만 가지고 있다. Runnable을 이용하여 쓰레드를 만드는 방법 public class LambdaExam1 { public static void main(String[] args) { new Thread(new Runnable() { @Override public void run()..

JAVA중급강의 정리 어노테이션, 쓰레드

본 포스팅은 프로그래머스 자바 중급 강의에 기반하여 작성되었습니다. 자바 강의의 모든 내용이 적힌것이 아닌 복습시 놓쳤던 부분을 하나하나 정리한 내용입니다. 순서 어노테이션, Thread란?, Thread만들기, Thread와 공유객체, 동기화 메소드와 동기화 블록, Thread 상태제어 join, wait, notify 컴파일할때나 런타임 때 어노테이션에 적은 설정값대로 실행되게 하기위해서 사용한다. 어노테이션 실무에서도 많이 사용된다 100퍼센트 확률 어노테이션은 Java5에 추가된 기능 어노테이션은 클래스나 메소드위에 붙습니다. @(at)기호로 이름이 시작합니다. ex) @Override 소스코드에 메타코드(추가정보)를 주는것 어노테이션을 클래스나 메타코드에 붙인 후, 클래스가 컴파일되거나 실행될 ..

JAVA 중급강의 정리 자바IO 입력과 출력

본 포스팅은 프로그래머스 자바 중급 강의에 기반하여 작성되었습니다. 자바 강의의 모든 내용이 적힌것이 아닌 복습시 놓쳤던 부분을 하나하나 정리한 내용입니다. 순서 자바IO, Byte단위 입출력, 다양한 타입의 출력, 다양한 타입의 입력, char 단위 입출력(Console), char 단위 입출력(File) 자바IO (입력과 출력) 자바IO 에서 I는 Input을 의미하고 O는 Output을 의미한다. 프로그램 상에서 들어오는 모든 데이터를 Input Data라고 한다. 밖으로 나가는 모든 데이터를 Output Data 입출력을 위한 인터페이스와 클래스들 자바 IO는 크게 byte단위 입출력과 문자(char) 단위 입출력클래스로 나뉩니다. byte단위 입출력클래스는 모두 InputStream과 Outpu..

JAVA 중급강의 정리 Date, Calendar, java.time패키지

본 포스팅은 프로그래머스 자바 중급 강의에 기반하여 작성되었습니다. 자바 강의의 모든 내용이 적힌것이 아닌 복습시 놓쳤던 부분을 하나하나 정리한 내용입니다. 순서 Date, Calendar, java.time패키지 Date 날짜와 시간을 구하기 위한 클래스 Date 클래스 Date클래스는 JDK 1.0때 만들어졌고, Calendar클래스는 JDK1.1에 만들어졌다. Date는 지역화에 대한 부분이 고려되지 않았다. 지역화란, 지역에 따라서 시간, 통화(원, 달러, 엔 등) 언어등에 대하여 고려하는 프로그래밍을 지역화에 맞춘 프로그래밍이라고 합니다. Date클래스를 보면 대부분의 생성자와 메소드가 Deprecated되어 있다. Deprecated된 것은 앞으로 지원을 안하거나 문제가 있을 수 있으니 사용하..

JAVA 중급 강의정리 java.util 패키지, Generic, 컬렉션 프레임워크

본 포스팅은 프로그래머스 자바 중급 강의에 기반하여 작성되었습니다. 자바 강의의 모든 내용이 적힌것이 아닌 복습시 놓쳤던 부분을 하나하나 정리한 내용입니다. 순서 java.util 패키지, 컬렉션 프레임워크, Generic, Set, List, Map java.util패키지는 유용한 클래스들을 많이 가지고 있는 패키지 날짜와 관련된 클래스인 Date, Calendar클래스 자료구조와 관련된 컬렉션 프레임워크와 관련된 인터페이스와 클래스 deprecated란 더이상 지원하지 않으니 사용하지 않는 것이 좋다란 의미다. Date클래스는 지역화를 지원하지 않는다. 지역화란 국가별로 현재 날짜와 시간은 다를 수 있는데, 그 부분을 지원하지 못한다. 이런 문제를 해결하기 위하여 나온 클래스가 Calendar클래스...

반응형