Java/기본
-
[Mac] 기본 JDK (JAVA_HOME) 설정하기Java/기본 2021. 3. 25. 21:44
한 머신에 여러 JDK를 깔아서 써야할 때가 있다. 그 상황에서 디폴트로 1개를 선택하고 싶을 때가 있다. (Gradle에서 인식이 안된다거나 등) 간단하게 디폴트 JDK를 설정 하는 것을 알아보자. java -version 현재 Mac 기본 JDK는 11.0.2로 설정 되어 있는 상황 /usr/libexec/java_home -V (V는 대문자다. 소문자로 하면 안된다) 현재 Mac에 깔려있는 JDK들을 확인한다. 11.0.2와 1.8.0_181이 깔려 있는 것을 확인할 수 있다. export JAVA_HOME=`/usr/libexec/java_home -v 1.8` (여기서 -v는 소문자다.) 기본 JDK로 설정하고자 하는 버전을 입력한다. 전체 이름을 입력해도 되고 1.8처럼 줄여서도 가능하다. (..
-
[Java8] Method Reference (메서드 참조) - 생성 방법Java/기본 2019. 12. 28. 17:56
Method Reference를 이해하려면 Lambda를 먼저 이해해야한다. 여기서는 Lambda식을 Method Reference로 변경하는 방법을 다룬다. Lambda식을 사용하다보면 IDE에서 친절하게 노란색으로 Method Reference로 바꾸지 않겠니? 하고 알려준다. 그래서 Lambda로 일단 만들고 IDE의 힘을 빌어 Method Reference로 바꾸곤 한다. 그래서 Method Reference 작성하는 원리를 정확히 모르고 사용하곤 한다. 모던 자바 인 액션 3장에 Method Reference에 대한 내용이 나오는데 내용이 좋아 정리해보았다. Method Reference를 만드는 유형에는 다음 3가지가 있다. (p. 116) 정적 메서드 참조: Integer의 parseInt를..
-
[Java9] IOJava/기본 2018. 5. 14. 00:19
InputStreamjava.io.InputStream읽기/복사에 관한 3개의 메소드 추가됨readAllBytes() : intput stream의 모든 바이트들을 읽음readNBytes(byte[] b, int off, int len) : b배열의 off위치부터 len byte만큼 읽음transferTo(OutputStream out) : input stream에서 모든 bytes를 읽고, OutputStream에 씀이제 Apache Commons IO 같은거 안써도 됨 The ObjectInputStream Filter객체를 저장하거나 네트워크 전송을 위해 직렬화 함데이터를 객체로 역직렬화 할 때 데이터가 유효한지 검증이 필요함이제 입력을 필터링하기 위해 java.io.ObjectInputStream..
-
[Java9] Variable HandlesJava/기본 2018. 5. 2. 21:46
개요java.util.concurrent.atomic이나 sun.misc.Unsafe을 이용하여 값들을 읽기/쓰기 했었는데, 보다 일관적인 방법을 제공한다. 목적안정성: 유효한 메모리 바운더리안에서 사용무결정: final 필드 값을 업데이트 할 수 없음성능: sun.misc.Unsafe보다 성능이 비슷하거나 좋음사용성: sun.misc.Unsafe API, java.util.concurrent.atomic API보다 사용하기 좋음자극 자바에서 동시 및 병렬 프로그래밍이 할 일이 많아졌다. counter 값을 원자적으로(thread safe하게) 변경 하기 위해서는 AtomicInteger(공간문제나 추가 작업등으로 오버헤드가 큼)나 sun.misc.Unsafe API(안전하지 않고 이식성이 안좋음)을 사..
-
[Java9] try-with-resources ImprovementJava/기본 2018. 4. 28. 23:44
예전에 Java7에서 변화된 try-with-resources(이하 TWR)에 대해 포스팅을 했었다. Java9에서는 더 발전된 TWR가 나왔다. Java7의 TWR만 해도 확실히 편해졌지만 불편한 점이 여전히 존재했다. 자원 할당을 try 밖에서 하면 그 변수를 가지고 바로 try문 안에서 사용할 수는 없었다. 따로 try안에서 새로운 변수를 선언하여 사용해야 했다. 아래 코드를 보자. 하지만 Java9에서는 그럴 필요가 없게 되었다. 세미콜론을 이용해서 복수개의 변수를 가질 수도 있다. 한 가지 주의할 점은 사용할 변수가 final이거나 effectively final(초기화 된 이후 절대 바뀌지 않는 변수)이어야 한다는 점이다. 참고http://javasampleapproach.com/java/ja..
-
Reflection 리플렉션Java/기본 2018. 1. 21. 23:46
토비의 스프링 3.1 Vol.1 6장을 읽다가 리플렉션에 대해 설명이 나왔는데 쉽게 잘 설명이 되있다. 그래서 책의 내용을 읽고 정리해보았다. 위키에 리플렉션에 대한 정의는 다음과 같다.반영(Reflection)은 컴퓨터 프로그램에서 런타임 시점에 사용되는 자신의 구조와 행위를 관리(type introspection)하고 수정할 수 있는 프로세스를 의미한다. “type introspection”은 객체 지향 프로그램언어에서 런타임에 객체의 형(type)을 결정할 수 있는 능력을 의미한다. 위의 설명만으로는 잘 와닿지 않는다. 아래는 책의 설명이다. 자바의 모든 클래스는 그 클래스 자체의 구성정보를 담은 Class 타입의 오브젝트를 하나씩 갖고 있다. '클래스이름'.class'라고 하거나 오브젝트의 get..
-
[Java9] 자바9 설치Java/기본 2017. 9. 23. 03:04
드디어 자바9가 정식 출시 되었다.설치는 오라클 Java SE 다운로드 페이지에서 받을 수 있다. Accept License Agreement를 선택하고 자신의 OS에 맞는 버전을 다운받는다.(윈도우 10 기준: jdk-9_windows-x64_bin.exe)파일을 열어 설치를 한다. (따로 경로 설정하지 않고 쭉쭉 그대로 진행하는 것이 무난함) 설치가 완료되면 제어판 - 모든 제어판 항목 - 시스템창에서 고급시스템설정 - 환경변수(N)을 클릭한다. 새로 만들기를 눌러서 새로운 시스템 변수를 입력한다. 변수 이름에는 JAVA_HOME (다른 것도 가능하지만 관례상 이렇게 사용한다),변수 값에는 jdk-9가 설치된 경로로 설정한다. 디렉터리 찾아보기를 이용하면 쉽게 경로를 넣을 수 있다. 개인적으로 윈10..
-
[Java7] 자바 숫자 _(언더바) 표현Java/기본 2017. 7. 9. 21:12
Oracle Java docs: Underscores in Numeric Literals 자바 8 인 액션을 보다가 숫자와 _(언더스코어)를 섞어서 쓰는 것을 처음 보았다. int a = 10_000_000; 이런 식인 것이다. 자바7 이후 버전부터 _는 숫자 리터럴의 어디에도 등장할 수 있다. 이로 인해 숫자를 끊어 읽을 수 있게 되어 가독성을 향상 시킬 수 있다. 예를들어 int myMoneyWon = 180000000라고 할 때, 한번에 얼마인지 파악하기 힘들다. 하지만 int myMoneyWon = 180_000_000라고쓴다면 (한국인의 경우) 몇 원인지 파악하기 쉽다. 하지만 마음대로 숫자와 섞어 쓸수는 없다. _는 숫자 사이에만 올 수 있다. 아래와 같은 곳에는 위치할 수 없다. 숫자의 처음..