본문 바로가기

Java4

Gradle 파헤치기 - 1. Gradle과 구성 요소 자바 프로젝트를 구성할 때 빌드를 gradle로 선택해 생성하면, build.gradle, gradlew, gradlew.bat 등 다양한 gradle 관련 파일들을 볼 수 있다. 그냥 이렇게 구성해라 하는 튜토리얼만 봤지 이게 뭔지 궁금해본 기억은 없다. 프로젝트를 진행할 때도 슬슬 고민을 해볼 때인 것 같다는 생각이 들었고, 이번 기회에 한 번 파헤쳐봤다. 1. Gradle이란? 우리가 생성하는 Java 코드들(.java 파일들)이 실행 가능한 소프트웨어로 변환되기 위해서는 빌드 과정을 거쳐야 한다. 빌드는 소스 코드를 컴파일 할 뿐만아니라 dependency를 추가해주고 실행가능한 bundle(묶음 파일)을 생성한다. 빌드 과정은 컴파일 → 링킹 → 패키징 → 테스트로 이루어진다. 이렇게 빌드를 끝.. 2022. 11. 30.
Java의 Error, Exception, 그리고 Checked와 Unchecked 자바는 오류가 발생하거나 발생할 여지가 있는 여러 상황에 대한 예외를 예비해두었다. IllegalArgumentException이나 NullPointerException 등이 이 예외의 예시이다. 또한, Try - catch를 통해 예외를 처리할 수 있음을 우리는 알고 있다. 필자는 보통 어떻게 코드를 구성해야 클린하게 예외를 처리할지에 집중했지, 예외 그 자체에 대해서는 간과하곤 했다. 하지만 여러 경험을 통해 다양한 Exception을 마주하게 됐고, 오류나 예외에 대해서도 공부할 필요성을 느꼈다. 그렇게 정리한 내용을 함께 봐보자. Error와 Exception의 차이 Error와 Exception은 비슷한 것 같지만 다르다. 혼용하기도 하고, 다른 줄 몰랐던 사람도 있을 것이다. 차이점은 문제의 .. 2022. 11. 22.
왜 Generic에 Primitive Type은 사용하지 못할까? 자바에서 Generic을 사용하다보면 알겠지만, Generic에는 오직 객체만 사용할 수 있다. 다시 말해, int, long, boolean 등의 primitive type들은 generic에 사용할 수 없다. 그 이유가 무엇일까? Generic은 초기 자바에는 포함되지 않았고, Java5부터 추가됐다. 처음부터 존재했던 기능이 아니기 때문에, Generic이 없었을 때의 Java 버전과 호환성을 갖춰야 했다. 이로 인해 Generic의 구현은 Type 삭제를 통해 이루어졌다. 즉, 모든 generic 타입은 컴파일타임에 object로 변환되고, Generic을 포함하는 클래스는 올바른 타입을 갖는 객체로써 변환된다. 예를 들자면 public class Container { private T data;.. 2022. 10. 25.
Double-Checked Locking In Java 해당 글을 번역하면서 이해한 내용을 정리합니다: https://en.wikipedia.org/wiki/Double-checked_locking Double-checked locking - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search In software engineering, double-checked locking (also known as "double-checked locking optimization"[1]) is a software design pattern used to reduce the overhead of acquiring a lock by en.wikipedia.org Double-ch.. 2022. 10. 22.