자바를 플랫폼 독립적인 언어라고 부르는 이유 자바는 JVM 위에서 동작하는데 이 JVM이 OS에 독립적이다. 자바의 실행 원리 코드를 javac라는 명령어를 통해 컴파일을 한다. 이를 완료하면 .class라는 바이트코드가 생성되는데 이 파일은 java라는 명령어를 통해 실행할 수 있다. .class를 실행하면 JVM이 클래스 파일을 읽어 프로그램을 실행하게 된다. JVM, JRE, JDK의 차이 JVM은 자바 클래스 파일을 실행하는 역할, JRE는 JVM이 실행될 수 있는 환경을 만들어줌, JDK는 개발할 수 있는 여러 툴들을 제공 JVM은 컴파일 된 클래스 파일을 구동하는 역할을 한다. JRE는 클래스 파일을 읽는 class loader, 로딩된 클래스 파일을 검증하는 bytecode verifier,..
java
JDBC DBCP라는 것에 대해 알아보기 전에 먼저 JDBC에 대해 알아보자. JDBC는 Java DataBase Connectivity의 약자로 자바에서 데이터베이스에 연결하기 위해 사용되는 인터페이스이다. Oracle, MySQL, Postgresql 등 여러 데이터베이스에서는 JDBC를 사용하기 위해 필요한 각각의 Driver를 제공하는데 우리는 이것을 이용해 DB에 접속할 수 있다. JDBC를 이용해 DB에 접속하는 순서는 다음과 같다. DB접속을 위해 JDBC 드라이버 로드 getConnection 메소드로 DB 커넥션 객체를 얻는다. 쿼리 수행을 위해 PreparedStatement 객체 생성 excuteQuery 를 실행해 쿼리 실행 결과를 받는다. 이때 DB 연결마다 1번과 2번의 과정(D..
자바 8버전 이후부터 인터페이스에 기본 메소드(default method)와 스태틱 메소드(static method)를 사용할 수 있다. 기본 메소드(Default Method) 여러 구현체들이 한 인터페이스를 구현하고 있을 때, 인터페이스에 어떤 기능을 추가하기 위해서는 그것을 구현한 구현체들 모두에서 기능에 대해 정의해주어야 한다. 이런 불편함 때문에 자바 8 버전 이후부터 인터페이스 내부에 default method를 구현할 수 있게 됐다. (때문에 함수형 인터페이스(Functional Interface)에 여러 개의 default method와 static method가 있어도 추상 메소드가 하나인 경우 함수형 인터페이스로 본다. 즉, 추상 메서드의 개수가 기준이 된다.) 기본 메소드란 인터페이스..
Lambda Capturing 람다(Lambda)의 바디에서는 파라미터가 아닌 바디 외부에 있는 변수를 참조할 수 있다. 유사하게 로컬 클래스, 익명 클래스에서도 참조가 가능하다. public class VariableCapture { private void run() { // 로컬 클래스, 익명 클래스, 람다에서 이 변수를 참조하면 effective final로 변경 int baseNumber = 10; // 람다 IntConsumer lambda = (i) -> System.out.println(i + baseNumber); // i + 10 // 로컬 클래스 class LocalClass { void printBaseNumber() { System.out.println(baseNumber); // ..
Java에는 Checked Exception과 Unchecked Exception(Runtime Exception)이 있다. Exception 처리 예외 복구 예외 처리 회피 예외 전환 예외 복구 예외 상황 파악 후 문제를 해결하는 방법 예외를 catch해서 일정 시간, 조건만큼 대기 후 다시 재시도 반복 최대 재시도 횟수를 넘길 경우 예외 발생 예외 처리 회피 예외 처리를 직접 담당하지 않고 호출한 쪽으로 throws하는 방법 보통의 경우 예외를 그냥 던지는 것은 무책임한 방법일 수 있다. (로그라도 출력하는 것을 권장) 예외 전환 예외 회피와 비슷하게 throws를 하지만, 적절한 예외로 전환하여 던지는 방식 더 명확한 의미로 전달하기 위해 전환 단순하게 만들기 위해 wrap할 수도 있다. Check..