본문 바로가기

Language/Java

Gradle 에서 Executable jar 만들기 Gradle 프로젝트에서 Executable Jar를 만드는 방법!! 1. Main class를 만든다.간단하게 콘솔에 텍스트를 찍는 메인 클라스를 만들었다. dependency 관련 테스트를 위해 joda time으로 현재 시간도 같이 프린트 하는 코드로 작성했다. 2. gradle 설정build.gradle 파일에서 jar 관련 설정을 해주면 된다. jar { manifest { attributes 'Main-Class': 'com.minsub.sample.jar.Main' } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } }manifest 에서 main-class를 지종하고 from 에서 dependen.. 더보기
Java에서 Multi String 선언 할 수 있는 @Multiline 이 포스트의 핵심 내용은 아래와 같습니다.Java에는 여러 줄에 걸친 문자열을 선언하는 문법이 없어서 긴 문자열을 편집하는 작업이 불편합니다.이를 보완하는 방법을 찾던 중 Adrian Walker라는 개발자가 만든 Multiline-string 이라는 라이브러리를 발견했고, Eclipse에서도 쓸 수 있도록 코드를 수정해서 원저자의 허락을 받고 Github에 올렸습니다. (https://github.com/benelog/multiline)이 과정 중에 Annotation Processing과 ECJ(Eclipse compiler for Java)에 대해서 알게 된 것들을 정리했습니다.이 라이브러리와 비슷한 기능을 Lombok에 추가하거나, 안드로이드에서 annotation Processing을 활용할만한.. 더보기
JMS(Java Message Service) 메시징 시스템 분산 어플리케이션이 급격히 증가하면서 따라서 이전에 발생하지 않았던 동기화, 안정성, 확장성 그리고 보안 등에서 문제가 발생하기 시작하였다. 이에 대한 한가지 해결책은 메시지를 통해 각 컴포넌트 사이의 결합성(coupling)을 약화시키는 메시징 시스템이다. 메시징 시스템은 안정하고, 확장 가능하고 그리고 유연한 분산 어플리케이션을 제작하기 위해 사용된다. 이 글에서는 일반적인 메시징 시스템에 대한 내용과 메시징 시스템의 종류에 대해서 알아보며, 그런 후 개발자들이 JMS(Java Message Service; 자바 메시지 서비스)를 이용하여 메시지 기반의 어플리케이션을 어떻게 작성할 수 있는지에 대해서 알아본다. 메시징 시스템은 분리된 결합되어 있지 않은 어플리케이션이 비동기적으로 신뢰성.. 더보기
이클립스에서 JAVA API 소스 보기 이클립스에서 JAVA API 소스 보기 먼저 이클립스에서 자바 라이브러리 소스 파일을 경로에 추가 시킨다. 1. 아무 프로젝트나 선택해서 마우스 오른쪽 클릭한다 -> Build Path -> Configure Build Path... 2. Library탭의 rt.jar로 가서 Source attachment를 클릭한 뒤 Edit... 버튼을 클릭한다. 3. External File... 을 클릭한다. 4. 자바의 jdk가 설치된 폴더로 가서 'src.zip'파일을 클릭한뒤 '열기'버튼을 클릭한다. 그 다음은 계속 OK -> OK -> OK 보고 싶은 라이브러리 소스를 직접 확인한다 (ex : String 소스 직접 보기) 1. 'String' 글자에 직접 마우스를 오래 가져다 대면 위와 같은 창이 뜬다... 더보기
Apache Commons Library 효과적인 자바 개발을 위한 Apache Commons Library 자바는 Java Development Kit(JDK)라는 라이브러리를 기본적으로 제공해 자바의 효율성을 극대화하도록 설계됐다. 객체지향 개념을 이해하고 라이브러리를 학습하면 다양한 프로그램을 손쉽게 개발할 수 있다. 이번 시간에는 기본적인 자바 라이브러리를 활용해 좀더 고수준의 프로그램을 개발할 수 있도록 도와주는 Apache Commons Library에 대해서 알아보도록 하자.김흥래 hrkim3468@gmail.com|NHN I&S에서 근무하고 있다. 최근에는 스프링 프레임워크와 안드로이드 플랫폼에 관심이 많으며 현재 자바카페 커뮤니티 운영진으로 활동하고 있다.처음 자바 API 문서를 보면 방대한 라이브러리에 주눅이 든다. 라이브러리.. 더보기
[java] Serialization IO 속도 향상 Speed Up with Fast Java and File Serialization | Javalobby ince the first version of Java, day-by-day many developers have been trying to achieve at least as good of performance as in C/C++. JVM vendors are doing their best by implementing some new JIT algorithms, but there is still a lot to do, especially in how we use Java. For example, there is a lot to win in objectsfile serialization - nota.. 더보기
[Java] NIO Channel [펌] NIO Channel에 관하여1> 채널(channel)이란?채널은 한마디로 서버와 클라이언트간의 통신수단을 나타낸다. 좀더 깊이 있게 본다면 하드웨어 장비, 파일 ,네트워크 소켓, 혹은 프로그램 컴포넌트와 같이 읽기나 쓰기등 한 개 이상의 뚜렷한 입출력 작업을 수행할 수 있는 개방된 연결을 나타낸다.2> 채널의 역활채널은 비동기적으로 닫히고 중단(interrupt)될 수 있다. 따라서 한 스레드가 한 채널에서 하나의 입출력 작업으로 블록화하면 다른 스레드가 그 채널을 닫을 수도 있다. 비슷하게 한 스레드가 한 채널의 입출력 작업으로 블록화되면 다른 스레드가 블룩화된 스레드를 중단시킬 수 있다. 그래서 파일입출력에서 블록화된 스레드를 언제든지 중지시킬 수 있게 되었으며, 이를 이용해서 네트워크에서 non-.. 더보기
[Java] 객체 직렬화 Serialization (ObjectInputStream / ObjectOutputStream) 객체 직렬화 ObjectInputStream / ObjectOutputStream 객체 스트림은 프로그램 메모리상에 존재하는 객체를 직접 입출력해 줄 수 있는 스트림으로 현재 상태를 보존하기 위한 영속성을 지원할 수 있다. 자바에서 객체 안에 저장되어 있는 내용을 파일로 저장하거나 네트워크를 통하여 다른 곳으로 전송하려면 객체를 바이트 형태로 일일이 분해해야 한다. 이를 위하여 객체를 직접 입출력 할 수 있도록 해주는 객체 스트림이다. 1. 객체 전송의 단계 객체를 분해하여 전송하기 위해서는 직렬화(Serialization) 되어야 한다. 객체를 전송하기 위해서는 3가지 단계를 거친다. (1) 직렬화된 객체를 바이트 단위로 분해한다. (marshalling)(2) 직렬화 되어 분해된 데이터를 순서에 따라.. 더보기