항상 알려져 있지는 않지만 자바 플랫폼은 현대 기술 시스템에서 사용되는 다양한 도구와 구성 요소를 구현하는 데 사용되었습니다.
자바는 가장 인기 있는 프로그래밍 언어 중 하나입니다. 우리는 새로운 LTS 릴리즈인 자바 SE 21을 막 시작했습니다. 항상 알려지지는 않았지만 자바 플랫폼은 현대 IT 시스템에서 사용되는 다양한 도구와 구성 요소를 구현하는 데 사용되었습니다. 가장 인기 있는 것들에 대해 논의해 보겠습니다.
프로그래밍 IDE
IntelliJ IDEA, Eclipse 및 NetBeans - 가장 인기 있는 Java Programming IDE는 대부분 Java 언어로 작성됩니다. Java Virtual Machine (JVM) 덕분에 100% Java일 필요가 없습니다. JetBrains는 Kotlin에 많은 투자를 하므로 IDE가 활용되고 두 언어로 작성됩니다. 대부분의 경우 IDE는 데스크톱 애플리케이션이므로 Java Runtime Environment가 Windows, Linux 및 MacOS와 같은 다양한 플랫폼에서 실행될 수 있다는 사실로부터 이점을 얻습니다. 현대 솔루션은 상당히 복잡하며 프로그래밍을 더 쉽게 만들기 위해 다양한 프레임워크 및 라이브러리와의 통합을 제공합니다. 요즘에는 AI와 같은 어시스턴트와도 통합됩니다. 현재 모든 IDE에서 자바 21 기능 지원을 위한 작업을 진행하고 있지만 아직 완료되지 않았습니다.
젠킨스
젠킨스(Jenkins)는 가장 잘 알려진 오픈 소스 연속 통합 도구 중 하나입니다. 처음에는 허드슨(Hudson)으로 출시되었지만 나중에 오라클과의 충돌로 인해 포크(fork)되었습니다. 젠킨스는 자바(Java)로 작성되지만 다른 언어로 작성된 프로젝트를 구축하는 데 사용할 수도 있습니다. 꽤 모듈식이며 플러그인 덕분에 Go, Ruby, Python 및 기타 유형의 프로젝트에서 작동할 수 있습니다.
2018년에는 젠킨스 기능을 쿠버네티스 플랫폼으로 확장한 젠킨스 X가 출시되었습니다. 실행할 수 있지만 앱을 구축하고 k8s에 배포할 수도 있습니다. 젠킨스 X는 GitOps를 중심으로 구축되어 있으며 다양한 Secret Manager를 지원합니다. MLops에도 사용할 수 있습니다.
아파치 톰캣
자바로 작성된 많은 웹 서버들이 있지만, 아마도 가장 알려진 것들 중 하나는 아파치 톰캣일 것입니다. 현재 버전 (10!)은 자카르타 EE 10 플랫폼 사양의 일부를 구현합니다. 믿기 어렵지만, 그것은 1999년부터 시장에 나와 있습니다.
흥미롭게도 Apache TomEE는 Tomcat을 기반으로 하지만 다른 구성 요소를 추가하여 완전히 자카르타 EE 9.1 웹 프로파일 인증(이전에는 Java EE)을 받았습니다. 또한 Tomcat은 스프링 부트(Spring Boot)와 같은 다양한 인기 있는 자바 프레임워크를 활용합니다.
GraalVM
JDK를 C 대신 자바로 다시 구현하면 어떨까요? 그게 바로 GraalVM입니다. JIT 컴파일러뿐만 아니라 Native Image 기술도 포함되어 있습니다. Native Image는 AOT(Averse Of Time)를 바이너리로 컴파일하여 JVM 응용 프로그램의 실행을 향상시키도록 설계되었습니다. 그 덕분에 JVM 응용 프로그램은 더 빨리 시작하고, JVM 관련 웜업이 필요 없으며, 리소스 사용이 적습니다.
그러나 일부 단점이 있습니다. 모든 기능(예: 자바 에이전트)을 사용할 수 있는 것은 아니며, JIT(Just In Time) 컴파일러가 일반적으로 AOT보다 낫고(컴파일 시간 대신 런타임 데이터에서 작동할 수 있기 때문에), 일부 라이브러리는 작동하지 않습니다.
소나르 큐베
SonarQuebe는 Jenkins에 좋은 추가 기능입니다. 둘은 매우 잘 통합됩니다. Sonar는 정적 코드 분석 및 다양한 코드 품질 관련 메트릭을 위한 도구입니다. 독립 실행형 애플리케이션이지만 다양한 빌드 및 CI 솔루션과 통합할 수 있습니다. 자바로 작성되었지만 다시 말하지만 jvm이 아닌 다른 많은 프로그래밍 언어를 지원합니다.
키클로크
Auth0, Firebase Authentication 또는 AWS Cognito와 같은 솔루션을 알고 계십니까? KeyCloak은 오픈 소스 Identity and Access Management 시스템으로 사내에 배포할 수 있습니다. Auth를 프로젝트에 통합해야 하는데 호스팅된 솔루션을 선택할 수 없다면, 당신을 위한 것일 수 있습니다. KeyCloak은 소셜 로그인, 2FA 및 기타 가장 중요한 보안 관련 기능을 지원합니다.
신축성, 로그스택 스택(키바나 미포함)
Elastic Stack(이전의 ELK Stack)은 자바 프로그래밍 도구들의 집합이라고 쓰고 싶은 유혹이 있습니다. 스택에는 다음과 같은 세 가지 주요 도구가 포함되어 있습니다:
엘라스틱 서치 - 검색 엔진,
로그스태시 - 흡입 파이프라인,
키바나 - 시각화 도구.
예를 들어, 그들은 여러분이 여러분의 응용 프로그램으로부터 로그를 모으고, 색인을 만들고, 검색하고, 결과를 시각화할 수 있는 솔루션을 함께 형성합니다. 추한 사실은 키바나는 자바스크립트와 타이프스크립트로 작성되었지만, 나머지는 자바를 활용한다는 것입니다. Elasticsearch도 자바를 기반으로 하는 Apache Lucene에 의존합니다.
아파치 카산드라
Apache Cassandra는 오픈 소스 NoSQL 데이터베이스입니다. 확장성이 뛰어나고(수십만 개의 노드에 페타바이트의 데이터를 저장할 수 있음) SPOF(Single Point of Failure)가 없습니다. 자바 코드를 기반으로 합니다. 특정 데이터 모델과 제한된 쿼리 기능으로 인해 사용하기 가장 쉬운 데이터베이스는 아니며 모든 프로젝트에 적합하지는 않습니다.
네오4j
네오4j는 오픈 소스 NoSQL 데이터베이스이기도 합니다. 하지만 카산드라와는 완전히 다릅니다. 노드, 엣지 및 속성을 저장할 수 있는 그래프 데이터베이스입니다. 소셜 네트워크에서 친구의 연결을 모델링하고 그 관계를 쿼리하고 싶다면 네오4j가 좋은 선택일 수 있습니다. 그런 구조를 쿼리하는 방법은 무엇인가요? 네오4j는 사이퍼 쿼리 언어를 활용합니다.
아파치 카프카
데이터베이스에서 벗어나 메시지 브로커에 대해 알아보겠습니다. 아파치 카프카는 최근 몇 년 동안 번창해 왔습니다. 카프카는 데이터 스트리밍 및 처리뿐만 아니라 마이크로 서비스 통신에도 사용됩니다. 카프카의 핵심은 스칼라로 작성되었지만 현재 다른 부분들은 자바로 구현되어 있습니다. 카프카 외에도 카프카 스트림, 카프카 커넥트 또는 스키마 레지스트리와 같은 관련 프로젝트에 관심이 있을 수 있습니다.
아파치 액티브 MQ
ActiveMQ는 Kafka보다 훨씬 오래된 프로젝트로 거의 20년 동안 존재했지만 여전히 활발하게 개발되고 있습니다. 자바 메시지 서비스(JMS) 사양을 지원하고, 다중 프로토콜(AMQP, STOMP, MQTT 등)과 클러스터링 모드를 지원합니다. 현재 액티브엠큐 릴리즈는 클래식과 아르테미스라고 불리는 차세대 두 가지가 있습니다. 흥미로운 점은 아르테미스가 레드햇에서 기부한 호넷큐 프로젝트를 기반으로 하고 있다는 것입니다. 액티브엠큐의 다음 주요 릴리즈는 이 버전을 기반으로 할 것입니다.
결론들
자바 프로그래밍 언어는 많은 응용 프로그램과 도구에서 사용됩니다. 자바 개발자들이 일상적으로 작업할 수 있도록 도와주지만, 이를 기반으로 한 제품들은 웹 애플리케이션을 배포하거나 데이터를 저장하거나 시스템 간에 메시지를 교환하는 데 사용될 수 있습니다. 몇 년이 지났지만 시장의 자바 상황은 안정적이고 도구는 성숙했으며 여전히 활발하게 작업하고 있습니다. 새로운 프로젝트를 시작하는 것을 고려하고 있다면 자바가 좋은 후보가 될 수 있습니다.
'SW > Java' 카테고리의 다른 글
Java : PDF를 래스터 이미지로 변환하기: 무료 API 솔루션을 활용한 자세한 가이드 (0) | 2024.02.07 |
---|---|
Java 21의 가상 스레드 혁신: JMeter 성능 극대화를 위한 완벽한 가이드 (0) | 2024.02.02 |
Java를 사용하여 PDF 파일의 비밀번호를 보호하는 방법: 단계별 가이드 (0) | 2024.01.12 |
Javax에서 Jakarta 마이그레이션을 처리하기 위한 모범 사례 (0) | 2024.01.08 |
Java 21, Java의 주요 단계: Non-blocking IO 및 업그레이드된 ZGC (0) | 2024.01.06 |