본문 바로가기

자바5

[자바] - unnamed package의 문제점과 JDK의 클래스패스 설정 방법들 1. 패키지는 코드로 명시해야 한다. 자바의 패키지(package)는 단순히 클래스(.class) 파일들을 디렉토리에 배치한 개념이 아니라 자바 컴파일러나 JVM이 특정 클래스의 위치를 정확하게 식별하게 도와주는 실질적인 "코드"다. 따라서 패키지 선언문이 없는 자바 소스코드를 컴파일한 후에, 특정 디렉토리 내부에 배치해도 해당 디렉토리는 클래스 파일의 패키지가 될 수 없다. JVM은 클래스를 찾지 못한다(No Class Def Found Error)고 내뱉는다. 패키지 없이 컴파일한 소스코드는 나중에 디렉토리에 배치해도 그 경로가 패키지가 될 수 없다. 패키지는 반드시 코드로 명시되어야 한다. 예를 들어, 아래와 같은 자바 소스코드가 있다. 패키지 선언문이 없다. public class Hello { .. 2023. 12. 31.
[자바] - Java 플랫폼을 둘러싼 모든 개념들 총정리 Q: JDK란? Java Development Kit 의 약자로, 자바로 개발을 하는 사람들을 위한 모든 필요한 소프트웨어 묶음을 말한다. 따라서 자바 실행 프로그램(java.exe)뿐만 아니라 컴파일러(javac.exe), jar.exe, javadoc.exe, 표준 라이브러리 코드들을 전부 포함한다. Q. JDK의 버전 숫자에 대해서 오라클(oracle) 회사에서 지속적으로 자바 문법과 표준 라이브러리에 대한 명세를 업데이트하고, 업데이트 숫자를 붙여 각 버전을 구분한다. 이걸 통틀어서 Java 13, Java 21, ... 이런 식으로 부른다. 특이한 점은 Java 8 이하의 버전들은 Java 1.8, Java 1.6, .. 이런 식으로 1.x 형태로 표기하는데, 이는 초기 자바 진영이 메이저 업데.. 2023. 12. 31.
[자바] - 한글이 깨지는 문제의 원리 1. 문자열과 인코딩 문자열과 관련된 문제를 다루기 위해서는 인코딩(encoding)의 원리를 알면 된다. 컴퓨터는 0과 1로 이루어진 비트로 정보를 처리한다. 따라서 컴퓨터가 정보 처리를 마친 후에 그것을 우리(인간)가 이해하기 위해서는 0과 1로 이루어진 외계어를 사람이 이해하는 기호로 바꿔야 한다. 이 과정을 인코딩(encoding)이라 부른다. 문자열도 마찬가지다. 문자도 정보이므로 이것을 컴퓨터로 작업하기 위해서는 0과 1로 바꾸어 처리해야 한다. 그리고 그 결과를 이해하기 위해 0과 1로 이루어진 순수한 정보를 사람이 알고 있는 알파벳으로 바꿔야 한다. 물론 이때는 표준을 통일시켜 모두가 같은 인코딩 방식을 따라야만 비로소 유용할 것이다. 누군가는 A를 100이라고 하고, 누군가는 101이라고.. 2023. 12. 15.
동적 타입 언어와 정적 타입 언어의 차이점 (덕 타이핑) 0. 서론: 객체와 타입 객체지향에서 객체를 구현하는 주요 문법은 클래스다. 클래스는 많은 오해가 있다. 대표적인 예시가 바로 클래스를 붕어빵을 만드는 틀로 묘사하는 것이다. 붕어빵틀 비유는 클래스라는 문법 장치를 객체의 구현 코드로 인식하기 때문에 발생하는 오해다. 그러나 클래스는 객체를 구현하기 위한 코드가 아니라, 객체의 타입(type)을 구현하기 위한 코드다. 객체의 타입과 클래스 문법에 대한 자세한 설명은 책에서 잘 기술되어 있다. (링크) 여기서 간단히 요약하자면, 객체의 타입(type)이란 객체(object)를 분류(classify)하기 위한 추상화/일반화된 개념(concept)이며, 클래스 문법은 바로 이 개념, 즉 타입(type)을 구현하는 코드라는 것이다. 특정 클래스로 분류될 수 있는.. 2023. 12. 13.