Old Posts226 [Java] OS 환경변수 불러오기 자바 프로그램을 실행시킬 때 Bash 스크립트를 통해 실행시키는 경우가 많다. 이 때, Bash에서 환경변수들을 설정해두고 자바 프로그램을 실행할 때 값들을 넘겨서 자바 로직에 사용하고 싶은 경우가 있다. 자바 프로그램에 인자형태로 넘겨주거나 파일 형태로 설정값들을 넘겨줘도 되지만 운영체제의 환경변수를 읽는 작업은 여전히 유효하다. 운영체제에서 환경변수는 환경변수 이름(Name)과 값(Value) 쌍으로 관리된다. 자바에서는 JVM이 실행되는 환경 변수 값을 System.getenv() 메소드를 통해 얻어온다. System.out.println("Environment Variables : " + System.getenv()); System.out.println("JAVA_HOME : " + System... 2021. 4. 23. [Java] OkHttp 커넥션 풀(Connection Pool) 기능 OkHttp 라이브러리는 '커넥션 풀(Connection Pool)' 기능을 제공한다. REST API 서버에 요청을 보낼 때, 매번 연결을 맺는 대신 커넥션 풀(Connection Pool) 기능을 이용해서 동일한 URL로의 커넥션을 풀링하여 다음번 요청때에 재사용하는 기능이다. 커넥션을 새로 빌드하는 동작은 그 하나로는 짧지만 경우에 따라서 무시할 수 없는 오버헤드로 작용할 수 있다. OkHttp 커넥션 풀링 기능 OkHttp 클라이언트 객체를 생성할 때, 기본적으로 커넥션 풀링 기능이 적용되어 있다. OkHttpClient client = new OkHttpClient(); REST API를 이용하고자 할 때, OkHttpClient 객체를 생성했다. 이 생성자의 내부를 들어가보면 Connectio.. 2021. 4. 22. [Java] OkHttp id-password를 사용한 기본 인증 예제 (Basic Authentication Example) 자바로 REST API를 사용할 때 OkHttp 라이브러리를 자주 사용한다. REST API 중에는 가장 '기본 인증(Basic Authentication)' 방법으로 사용자의 아이디와 비밀번호를 요구하는 경우가 있다. 터미널에서 curl 명령으로 REST API를 사용할 때에는 -u 옵션으로 아이디와 비밀번호를 입력할 수 있다. curl -u userId:userPassword {...} OkHttp 라이브러리를 사용하는 자바 프로그램에서는 어떻게 '기본 인증(Basic Authentication)'을 요구하는 REST API 서버에 인증을 진행하는지 예제를 통해서 알아보겠다. BasicAuthenticator 구현 OkHttp 클라이언트는 OkHttp3.Authenticator라는 인터페이스를 구현한.. 2021. 4. 21. [Java] 문자열 비교하기 - equals() 메소드와 == 연산 비교 자바에서 가장 오묘한 자료형은 문자열이다. 자바 프로그래머들은 문자열을 기본자료형(Primitive Type)처럼 인식하고 쓰는 경우가 많이 있지만 사실은 객체다. 때문에 두 객체의 정확한 값을 비교하는 equals() 메소드를 써야한다. == 연산으로 두 문자열을 비교할 경우 문자열의 내용이 아니라 문자열 객체의 참조값(주소값)을 비교하기 때문에 정확히 동일한 문자열이라도 다르다고 판단할 수 있다. 문자열의 비교 '==' 연산 vs 'equals()' 메소드 문자열의 내용이 동일하더라도 JVM 메모리에서 각자 다른 객체로 존재한다면 '==' 연산은 다르다고 판단할 것이다. 다음 코드를 보자. public class Example { public static void main(String[] args) .. 2021. 4. 20. [Java] 자바 디렉토리(폴더) 생성 및 삭제 예제 자바를 이용해서 파일 시스템에 접근, 파일을 열거나 생성해서 데이터를 읽고, 쓰는 작업은 많이했다. 파일은 파일시트메의 디렉토리 혹은 폴더의 엔트리로 존재한다. 자바로 디렉토리(폴더)를 생성하고 삭제하는 코드를 구현해보자. 디렉토리 생성 특정 경로에 디렉토리가 없을 경우 자동으로 생성해주는 소스코드는 다음과 같다. import java.io.File; public class MakeDirectory { public static void main(String[] args) { // 생성할 디렉토리 경로 String path = "/tmp/testDir1"; File dir = new File(path); // 디렉토리가 존재하는지 체크 if (!dir.exists()) { try{ // 생성 boolean.. 2021. 4. 20. [Java] JNI 사용법 및 예제 자바는 가상 머신인 JVM위에서 실행되도록 만들어진 언어다. 프로그래머가 자바 언어로 작성한 프로그램은 JVM 위에서 동작하도록 중간 언어인 바이트 코드로 컴파일 된다. 운영체제나 아키텍처와 관련된 호환은 JVM이 신경써주기 때문에 하나의 소스코드로 작성한 프로그램을 플랫폼에 상관없이 실행할 수 있다. 다시말해서 자바로 작성된 프로그램을 윈도우에서도 실행할 수 있고, 리눅스에서도 동일하게 실행할 수 있다는 의미다. JVM이 하는 이런 역할은 자바뿐 아니라 JVM 언어들의 강점이다. 하지만 운영체제가 제공하는 특정 기능들을 자바에서는 사용하기 힘들다는 단점도 있다. 리눅스 커널이 업데이트 되면서 새로운 시스템 콜이 추가되거나 특정 유닉스의 시스템 콜을 호출하고 싶지만 JVM이 지원하지 않으면 자바에서 사용.. 2021. 4. 19. [Java] Java Unsupported major.minor version 52.0 에러 Java 프로그램을 작성한 다음 클러스터에 배포를 할 때 가끔씩 Java Unsupported major.minor version 52.0 에러를 만나게 된다. 톰캣(Tomcat)이나 하둡 맵 리듀스(MapReduce)처럼 jar 파일로 묶어서 배포하는 경우에 쉽게 만나볼 수 있는 에러다. "Java Unsupported major.minor version 52.0"라는 메시지에서 알 수 있듯이 Java 버전이 맞지 않아서 발생하는 에러다. 정확히는 jar 파일을 생성한 빌드환경과 생성한 jar 파일을 실행하려는 환경이 다른 JDK 버전을 사용하고 있는 경우 발생한다. Java SE 8 (JDK 1.8)에서 빌드한 Jar 파일을 Java SE 7 (JDK 1.7)이 설치되어 있는 환경에서 실행하려고 하면.. 2021. 4. 1. [Java] 람다식(Lambda Expressions) 사용법 및 예제 자바8에서 '람다식(Lambda Expression)'이 지원되면서 자바는 완전히 새로운 언어처럼 보이기 시작했다. 지네릭스(Generics)가 자바을 크게 변화시킨 것처럼 람다식 역시 자바를 어마어마하게 변화시켰다. 람다식의 등장으로 자바는 객체지향 언어의 특징과 함께 함수형 언어의 특성을 갖추게 되었다. 람다식(Lambda expression) 람다식은 1930년대 알론조 처치(Alonzo Church)라는 수학자가 처음 제시한 함수의 수학적 표기방식인 '람다 대수(lambda calculus)'에 그 뿌리를 두고 있다. 람다식을 이용하면 코드가 간결해지고, 지연 연산 등을 통해서 성능 향상을 도모할 수 있다. 반면 모든 엘리먼트를 순회하는 경우에는 성능이 떨어질 수도 있고, 코드를 분석하기 어려워 .. 2021. 3. 31. [Java] Project Lombok Annotation 자바의 버전이 올라가면서 간결한 코드 작성을 위한 장치들이 많이 도입되고 있다. 하지만 여전히 자바의 가장 큰 문제점 중 하나로 군더더기가 많은 점이 꼽힌다. '프로젝트 롬복(Project Lombok)'은 자바로 작성된 소스코드를 좀 더 간결하게 만들어주기 위한 프로젝트다. 간단한 클래스를 작성해보자. public class Student { private final int id; private final String name; private final int age; private final String department; public Student(int id, String name, int age, String department) { this.id = id; this.name = name; t.. 2021. 3. 30. 이전 1 ··· 19 20 21 22 23 24 25 26 다음