본문 바로가기

Java18

[Java] JDK9의 새로운 기능 현재 Java Release가 21까지 나온 상황이다. 아직도 Java8은 많이 사용되고 있지만, 옛날 기술이 되어간다고 느낍니다. 이후 Java 9버전, 11버전에서 강력한 기능들도 추가됐으니 8버전을 쓰는것이 점점 손해라 생각합니다. 더 늦기 전에 9버전, 11버전을 사용해보면서 익숙해지기 위해 새로운 기능들에 대해 정리합니다. 먼저 9버전을 정리하는데 많은 기능들 중에 가장 자주 쓰이는 기능을 정리하겠습니다. (Java 9버전의 더 많은 기능은 오라클의 JDK9 문서를 참고해주세요!) 컬렉션을 위한 팩터리 메서드 자바의 컬렉션 추상화 최상위 수준에는 List, Set, Map이 있습니다. 지금까지 Java에서 컬렉션을 초기화함과 동시에 요소들을 넣는 방법이 간단하지 않았습니다. 또한 컬렉션의 요소를.. 2022. 1. 25.
Javadoc 생성하기 이전 글에서는 Javadoc에 대해서 정리했습니다. 이번에는 Javadoc 생성에 대해 정리해보겠습니다. 우선 간단한 코드부터 작성해보겠습니다. 예시 프로젝트를 생성하고 package-info.java에 패키지에 대한 문서화 주석을 작성했습니다. 다음 SomeClass에 코드를 작성합니다. package javadoc_test; /** * 예시용으로 만든 클래스. * * 예시입니다. */ public class SomeClass { /** * 영문자를 소문자로 반환한다. * * @param word - 소문자로 변환할 문자 * @return 인자로 들어온 word를 소문자로 반환 */ public String toLowerCase(String word) { return word.toLowerCase();.. 2022. 1. 21.
[Java] Javadoc 사용하기(feat. 문서화 주석) Javadoc이 어떤것인지 알고 있었지만, 문서화 주석에 대한 지식은 거의 없었다. 보통 라이브러리나 프레임워크의 내부 코드를 까볼때 문서화 주석의 도움을 많이 받았다. 하지만 항상 정보만 얻었지 문서화 주석을 어떻게 작성하는지에 대해서는 무지했다. 이번에 이펙티브 자바 를 공부하면서 제대로 정리해보자 라는 생각을 했다! Javadoc을 팀에서 사용하지 않을 수 있지만 문서화에 필요한 정보가 어떤것인지 얻을 수 있을거라 생각한다. 중간중간 예시를 활용해 Javadoc이 만들어주는 HTML을 직접 확인해보고 싶다면 간단하게 생성해볼 수 있다. Javadoc 문서 생성은 이 글을 참고해주세요! Javadoc이란? Java 소스 코드에서 HTML 형식의 API 문서를 생성하기 위해 Sun Microsystem.. 2022. 1. 21.
[Java]자바 직렬화 (Serialization) 모든 예시 코드는 이곳에서 볼 수 있습니다. 자바 직렬화는 다음의 고민을 해결하는데 사용할 수 있다. 자바 객체를 컴퓨터에 저장했다가 다음에 다시 자바 객체로 변환할 수 없을까? 네트워크를 통해 컴퓨터간에 객체를 주고 받을 수 없을까? 직렬화(Serialization)란? 객체를 데이터 스트림으로 만드는 것을 뜻한다. 직렬화 -> 객체에 저장된 데이터를 스트림에 쓰기(write)위해 연속적인(serial) 데이터로 변환하는 것을 의미한다. 역직렬화 -> 스트림으로부터 데이터를 읽어서 객체를 만드는 것을 역직렬화(deserialization)라고 한다. 객체에 저장된 데이터란 객체의 모든 인스턴스 변수의 값, 즉 객체의 상태를 의미한다. 어떤 객체를 저장하고자 한다면, 현재 객체의 상태(인스턴스 변수)를 .. 2022. 1. 12.
[Java] 힙 오염(Heap Pollution) 이펙티브 자바 아이템 32에 힙 오염(heap pollution) 키워드가 나옵니다. 나와있는 문장은 '매개변수화 타입의 변수가 타입이 다른 객체를 참조하면 힙 오염이 발생한다.' 입니다. JVM의 힙 영역(heap area)이 오염된 상태를 의미합니다. 즉 아래와 같은 상황을 예로 들 수 있습니다. public class HeapPollutionEx { public static void main(String[] args) { List strings1 = Arrays.asList("첫 요소"); List strings2 = Arrays.asList("첫 요소"); doSomthing(strings1, strings2); } private static void doSomthing(List ... strin.. 2021. 12. 23.