롬복 프로젝트는 오픈 소스 라이브러리다.
" 당신의 편집기에 자동적으로 연결되고 당신의 Java를 빠르게 만들어주는 Java 라이브러리입니다. 클래스에 완전한 작성기가 있는 주석, 로그변수 자동화등을 사용하여 다른 getter 또는 동일한 메소드를 다시 작성하지 마십시오." - Lombok Project
기존의 클래스에 메소드를 주입하기 위해 자바 파일을 컴파일 할 때 주석 처리 단계에서 추상 구문 트리를 수정하는 필수 메소드를 생성한다.
lombok은 모델 /데이터 객체의 보일러 플레이트 코드를 줄이기 위해 사용한다. 결합비용에 의한 기존 구현의 보일러플레이트 코드 감소와 비표준 공정의 이용에 의한 알 수 없는 리스크를 해소할 수 있는 솔루션이다.
장점은 코드 축소이다. 생성자나 setter, getter를 넣는 것이 아닌 메타 정보를 추가하는 것이다. 또한 clean code. 읽기 쉽게 만들 수 있다. 생성자, setter, getter 생성으로 인해 길어지는 것을 방지한다.
워낙 인터넷에 많이 돌아다녀서 생략한다.
Lombok을 지원하는 IDE는 인텔리J, 이클립스 뿐
자바 컴파일러에 밀접하게 묶여있다. 주석 프로세서 API는 컴파일 중에만 새 파일 생성(기존 파일의 수정이 아닌)을 허용하므로 롬복은 그 API를 자바 컴파일러를 수정하기 위한 진입점으로 사용한다. 불행이도, 컴파일러의 이러한 수정은 공개 API를 많이 사용한다. 컴파일러를 업그레이드를 하면 깨질 수 있다.
1. 롬복 진화의 추가 단계가 무엇인지 모른다. 다음 주요 버전은 역호환성을 깨야 할 수 있고, 의존성을 업그레이드 할 수 없게 되며 앞으로 유지되는 것을 멈출 낡은 의존성을 사용하도록 강요하게 될 수 있다.
2. 버그 발생 시. 분리된 모듈이 아닌 전체 애플리케이션에 걸쳐 나타날 수 있다는 것을 의미한다. 3. 유료화 전환이 된다면?
"전혀 해킹이야. 비공개 API 사용. 주제넘은 주조(Javac에서 실행되는 주석 프로세서가 JavacAnotationProcessor의 인스턴스를 얻게 된다는 것을 알고 있음)는 AnnotationProcessor(인터페이스)의 내부 구현이며, 이는 라이브 AST에서 사용되는 몇 가지 추가 방법을 가지고 있다. 일식에서는 거의 틀림없이 더 심각하다. – 일식 문법과 파서 클래스에 코드를 주입하기 위해 자바 에이전트가 사용되는데, 물론 완전히 공개되지 않은 API로 완전히 금지되어 있다. 롬복이가 표준 API로 하는 일을 할 수 있었다면 나도 그렇게 했을 텐데, 넌 할 수 없어. 하지만 그 가치를 위해 나는 자바 1.6에서 실행되는 일식 v3.5용 일식 플러그인을 개발했고, 아무런 변화 없이 자바 1.5에서 실행되는 일식 v3.4에서도 작동했기 때문에 완전히 깨지기 쉬운 것은 아니다." - 라이니에 즈위츠루트(Lombok Project 설립자 중 1인)
Lombok이 문제만 있는 것은 아니고, 분명한 장점인 "코드 축소"라는 점이 존재한다. 하지만, 그와 필적할 문제도 존재한다. 사용 시, 주의 깊은 판단 후 사용을 추천하지만. 최근 글이 거진 사용유도보다 문제점에 대한 글이 많은 것으로 보아 추천은 하지 않는다.
Lombok을 사용을 하려면, 간단한 프로젝트 시, 편리성을 위해 사용을 추천하지만. '프로젝트 내 모든 버전'의 변경을 하지 않을 것.이란 전제를 추가해야 할 것 같다.
대체할 만한 라이브러리로 AutoValue나 Immutables가 있다고 한다. 하지만, 사용하지 않아서 추천은 따로 하지 않는다.
lombok 홈페이지 : https://projectlombok.org/
lombok api https://projectlombok.org/api/index.html
롬복의 사용이유 및 사용하지 말아야 할 이유
https://www.vogella.com/tutorials/Lombok/article.html
https://stackoverflow.com/questions/4589184/what-are-the-risks-with-project-lombok
https://artofcode.wordpress.com/2018/12/18/dont-use-lombok/
https://medium.com/@vgonzalo/dont-use-lombok-672418daa819
https://levelup.gitconnected.com/be-careful-with-lombok-2e2edfc01110
https://www.baeldung.com/intro-to-project-lombok
https://blogg.itverket.no/to-lombok-or-not-to-lombok/
https://ppbruna.medium.com/why-you-should-not-use-lombok-f7556662e8c3
작성한 곳
https://www.notion.so/kaysworkspace/Lombok-c6f0fed85953477480b5df73a5e3a621