목록java (10)
And Brain said,

오늘은 Rust를 이용해 작고 귀여운 컴파일러를 하나 만들어 볼 것입니다. 컴파일러는 일반적으로 어떤 프로그래밍 언어로 작성된 소스 코드를 다른 프로그래밍 언어로 변환하는 프로그램을 말합니다. 가장 흔한 경우는 고급 언어로 작성된 소스 코드를 저급 언어(보통 기계어)로 변환하는 것입니다. 컴파일러는 일반적으로 다음과 같은 단계를 거치는데, 1. 어휘 분석(Lexical Analysis): 이 단계에서는 소스 코드가 토큰으로 분리됩니다. 토큰은 소스 코드에서 가장 작은 의미 단위로, 예를 들어 키워드, 식별자, 리터럴, 연산자 등이 될 수 있습니다. 2. 구문 분석(Syntax Analysis): 이 단계에서는 토큰들이 어떤 순서와 구조로 이루어져 있는지를 분석하여, 추상 구문 트리(Abstract Syn..

목차1. 클래스와 객체2. 인터페이스와 추상 클래스3. 메소드와 매개변수4. 제네릭 (Generics)5. 배열과 컬렉션6. 객체지향 프로그래밍7. 예외 처리8. Java I/O9. Java의 동시성(Concurrency)10. Java의 네트워킹11. Java의 리플렉션(Reflection)12. Java의 디자인 패턴13. 함수형 프로그래밍 오늘은 객체지향 언어의 대표주자 Java의 이론에 대해 간단하게 알아보자. 1. 클래스와 객체 Java는 순수 객체지향 언어는 아니지만 처음부터 객체지향을 위해 개발된 언어로, 당연히 객체라는 개념이 아주 중요하다. 객체(Object)는 객체 지향 프로그래밍(OOP)에서 프로그램의 기본 구성 요소로, 소프트웨어 세계에서 현실 세계의 개체를 모델링하여 표현한 것이..

제네릭(Generic)은 프로그래밍 언어에서 타입의 일반화를 가능하게 하는 고급 기능 중 하나로, 코드의 재사용성을 높이고 타입 안전성을 유지하기 위해 사용된다. 제네릭은 타입 매개 변수를 사용하여 일반적인 형태의 클래스, 인터페이스, 메소드 등을 작성할 수 있게 해주며, 이를 통해 개발자들은 여러 데이터 타입에 적용할 수 있는 공통 로직을 정의할 수 있으며, 컴파일 시점에 타입 검사를 수행하여 타입 안전성을 보장할 수 있게 된다. 제네릭을 사용할 때는 특정 타입에 의존하지 않도록 주의하고, 제네릭 타입 변수를 올바르게 사용해야 한다. 일부 프로그래밍 언어에서는 타입 추론이 가능하여 제네릭 타입 변수를 명시하지 않아도 될 수 있지만 가독성을 위해 필요한 경우 명시적으로 제네릭 타입을 지정하는 것이 좋다...

오늘은 간단히 JPA ORM 부터 나아가 QueryDSL 까지 배워보도록 하자. 이전에 이미 한 번 포스팅한 적이 있었지만, 미흡한 부분이 많아 다시 한 번 배워보자. 먼저, JPA ORM부터 살펴보자. JPA ORM은 Java Persistence API를 기반으로 하는 객체-관계 매핑(Object-Relational Mapping) 기술로, Java 객체와 관계형 데이터베이스 사이의 매핑을 자동화해 주는 프레임워크다. 이를 통해 개발자들은 SQL 쿼리를 직접 작성하는 것이 아니라, Java 객체를 사용하여 데이터베이스 작업을 수행할 수 있다. 이렇게 SQL 쿼리를 작성하지 않고도 데이터베이스 작업을 수행할 수 있어 개발자들의 생산성이 향상되고, 코드 가독성 및 유지보수성 증가 및 데이터베이스 독립성을..

오늘은 현재 안드로이드의 공식 언어이자 태생부터 진화된 자바를 표방한 언어, Kotlin에 대해 알아보고 Kotlin으로 구축하는 간단한 Spring boot 예제까지 배워보도록 하자. 최신 언어가 기존의 언어를 대체하기란 정말로 쉽지 않다. 대부분의 사람들은 익숙한 것을 좋아하고 또한 기존 코드가 너무 방대하면 손을 댈 엄두를 못 내게 된다. 특히, 자바와 같이 높은 완성도의 언어라면 특별한 이유가 있지 않는 한 대체할 이유를 느끼지 못하게 된다. 구글도 오라클과 소송만 아니었다면 자바를 계속 썼을 것이다. 선결 이유가 어떻든 Kotlin은 안드로이드의 공식 언어로 채택되었고 사람들에게 자신의 존재감을 드러냈다. Kotlin은 이러한 전략을 사용했다. 기존 언어와 호환 앞서 기존 언어를 대체하려 했던 ..