Java

· Java
Java 21 새로운 기능(1) - main에 이어 Preview 인 7개의 feature를 알아보자. String Templates String을 간단하게 사용하기 위해 이미 많은 언어에서 String Templates을 사용하고 있다. Stirng Templates은 String을 쉽게 표현해서 Java 코드 작성을 간단하게 한다. 이로 인해 text와 expressions의 가독성이 향상된다. C# $"{x} plus {y} equals {x + y}" Visual Basic $"{x} plus {y} equals {x + y}" Python f"{x} plus {y} equals {x + y}" Scala s"$x plus $y equals ${x + y}" Groovy "$x plus $y eq..
· Java
2023.09.19에 LTS 버전인 Java 21이 출시될 예정이다. Preview를 포함해서 총 15개의 feature가 포함된다. 이번 시간에는 정식 릴리즈된 feature들을 살펴보고, 다음 시간엔 Preview를 살펴보도록 하자. Virtual Threads Virtual Threads는 높은 처리량의 동시 애플리케이션을 작성, 유지 관리, 모니터링하는데 드는 비용을 획기적으로 줄여주는 경량 스레드이다. Thread Per Reuqest 스타일로 작성된 서버 애플리케이션을 최적의 하드웨어로 확장할 수 있다. 또한 `java.lang.Thread API`를 사용하는 기존 코드를 최소한의 변경으로 가상 스레드를 사용할 수 있게 하위호환성을 잘 유지한다. 예제 // 기본 Thread new Thread..
· Java
Web applications and Project Loom를 번역한 글입니다. 소개 Project Loom은 "간편한 사용성(easy-to-use), 높은 처리량(high-throughput), 가벼운 동시성(lightweight concurrency)"을 JRE에 제공하는 것을 목표로 합니다. Project Loom이 도입한 기능 중 하나는 Virtual thread입니다. 이 블로그 게시물에서는 Apache Tomcat에서 배포한 몇 가지 간단한 웹 애플리케이션을 사용하여 Virtual thread가 웹 애플리케이션에 어떤 의미를 주는지 살펴보겠습니다. 높은 처리량 / 경량화 첫 번째 실험은 Tomcat 표준 Thread pool 사용에 따른 overhaed와 Virtual thread(Loom) ..
· Java
lombok.config에서 사용할 수 있는 옵션은 lombok jar를 다운로드한 다음 아래 명령어를 작성하면 얻을 수 있다. 문서에 있을 법한데... java -jar lombok.jar config -g --verbose 그러나 직접 jar를 다운로드하고, 위의 명령어까지 치기에는 번거롭기에 정리해보려 한다. v1.18.26, v1.18.24 위 두 버전은 변경 사항이 없다. ## ## Key : checkerframework ## Type: checkerframework-version ## ## If set with the version of checkerframework.org (in major.minor, or just 'true' for the latest supported version),..
· Java
BigDecimal먼저 BigDecimal에 대해서 간단히 알아보도록 하자. BigDecimal은 큰 수를 표현하거나 부동소수점을 해결할 수 있는 클래스이다.거두절미하고 코드를 보자.@Test public void primitive() { System.out.println(2.0 - 1.1); } 위 코드에서는 무엇이 출력이 될까? 0.9가 나오길 기대하겠지만, 위코드는 0.8999999999999999 라는 이상한 값을 반환한다. 자바 기본서를 보던 옛날로 돌아가보자. 우리는 첫장에서 primitive type들에 대해서 공부를 했을 것이다. 그리고 각각의 type은 고유의 bit 크기를 가지고 있다. double같은 경우에는 32bit이고 이는 4.94065645841246544E-324 ~ 1.79..
· Java
ScheduledExecutorService는 concurrent 패키지에 포함되어 있으며, '일정 시간 후' 또는 '주기적'으로 command(작업)를 실행시켜 줄 수 있는 녀석이다. 스프링을 사용했다면 간편하게 @Scheduled를 사용했겠지만, 쌩 자바를 쓸 일이 있어서 ScheduledExecutorService를 사용해봤다. 코드 자체가 직관적이기 때문에 거두절미하고 코드를 보자. import java.time.Duration; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; i..
· Java
Json 형식으로 데이터를 주고받을 때 Jackson의 ObjectMapper를 자주 이용한다. 그런데 기본값으로 Serialize 하게 되면 null, "" 같은 (상황에 따라) 필요 없는 값 또한 모두 변환시켜준다. 이를 아래의 메소드를 통하여 Serialize할 때 원하는 값만을 포함시킬 수 있다. objectMapper.setSerializationInclusion(); 아래 주석처럼 어노테이션으로도 이용할 수 있다. 객체마다 Include 방식이 다르면 어노테이션을 활용하자. 그럼, 다양한 데이터를 가진 객체로 테스트를 해보자. jackson-databind 2.9.5를 기준으로 테스트가 진행되었다. @Getter //@JsonInclude(JsonInclude.Include.ALWAYS) pu..
· Java
개발동기비 오는 날만 알림을 받고 싶다. 세상에 좋은 날씨 애플리케이션은 많다. 그러나 매일 날씨 애플리케이션을 확인하는 것은 번거롭고, 내가 딱 필요한 정보만을 제공해주는 서비스도 (아마) 없다. 그래서 날 위한 서비스를 내가 만들기로 했다. 왜? 난 개발자니깐 작년에 개발실력을 향상하기 위해 온갖 서적과 영상 등을 봤다. 점차 이러한 학습량은 많아졌고, 아는 듯한 느낌은 많이 들었다. 그러나 막상 해보니 겉만 조금 알고 있었고 한계에 직면했다. 다르게 표현하자면 실질적으로 해보지 않고 한 행위들은 마치 연애를 책으로 배운듯한 느낌이 들었다. 그래서 올해부터는 실질적인 코딩에 좀 더 집중하기로 했다. 신경쓴 것OOPClean Code Test Code스케치 간단하다.스케줄러를 통해서 7시가 되면날씨 A..
AlwaysPr
'Java' 카테고리의 글 목록