본문 바로가기
반응형

자바32

자바 빈(Java Bean)이란 무엇인가? (자바 빈 예제) 자바 프로그래밍 관련 문서를 찾아보다가 '자바 빈즈(Java Beans)'라는 단어를 듣게 되었다. 자바빈즈(Java Beans)는 자바(Java)로 작성된 소프트웨어 컴포넌트를 일컫는 말로 데이터 표현을 목적으로하는 자바 클래스다. 자바 빈즈 클래스는 'Java Beans Convention'을 지켜야 하며, Java Beans Convention은 다음과 같다. 클래스는 인자(Argument)가 없는 기본 생성자(Default constructor)를 갖는다 클래스의 멤버 변수는 프로퍼티(Properties)라고 하며 private 접근 제한자를 가져야 한다. 클래스의 프로퍼티들은 Getter/Setter를 통해 접근할 수 있어야 한다 Getter의 이름은 get{프로퍼티 이름} 이며, Setter의.. 2019. 5. 15.
[Java] json-simple을 이용한 JSON 데이터 다루기 예제 (JSONParser, JSONObject, JSONArray 클래스를 이용한 예제) 자바에서 JSON 데이터를 다룰 일이 많다. 특히 REST API를 통해 데이터를 가져오는 경우 JSON 포맷을 사용하는 경우가 많기 때문에 JSON을 다루는 예제를 알아두면 좋다. 자바에서 JSON 포맷을 다루는 방법은 다양하지만 가장 간단한 방법인 'json-simple' 패키지를 이용하는 방법을 정리해보겠다. Maven 설정 json-simple 패키지를 사용하기 위해서 다음과 같은 메이븐(Maven) Dependency 설정이 필요하다. com.googlecode.json-simple json-simple 1.1 버전 정보는 적당한 걸 넣어주면 된다. JSON 파싱해보기 JSON으로 표현된 데이터를 다루기 위해서 json-simple 패키지에서 다음 클래스들을 사용하면 된다. JSONParser .. 2019. 5. 13.
자바(Java)의 박싱과 언박싱(Boxing & Unboxing), 오토박싱과 오토 언박싱(Auto Boxing & Auto Unboxing) 그리고 래퍼 클래스(Wrapper Class) 자바는 int, long, boolean 같은 변수의 기본 자료형(Primitive Type)을 제공한다. 하지만 이런 기본자료형은 컬렉션(Collection)이나 지네릭(Generic)에서 제한적으로 사용가능하다. 따라서 자바는 각 기본 자료형에 대응되는 래퍼 클래스(Wrapper Class) 제공하고 있다. 자바 변수의 기본형에 대응되는 래퍼 클래스(Wrapper Class)는 다음과 같다. 기본 자료형(Primitive Type) 래퍼 클래스(Wrapper Class) boolean Boolean short Short int Integer long Long float Float double Double char Character byte Byte 변수의 기본 자료형 이름의 첫 번째 글자만 대문자로 .. 2019. 4. 19.
Jps, jmap, jhat을 이용한 자바 메모리 덤프 분석 (Java Heap Memory Dump Analysis) 분석 도구 사용법 자바를 이용한 애플리케이션으로 구동되는 시스템에서 가장 조심해야 할 부분이 메모리 사용량이다. 힙 메모리(Heap Memory) 사용량이 이상하게 많거나 점점 증가해서 OutOfMemory 에러가 발생하기도 한다. 메모리 사용량 측면에서 이상 동작이 감지되었을 때, 자바 애플리케이션을 분석할 방법이 필요하다. 이와 관련하여 각종 상용 제품들이 있지만 가장 기본적인 툴들인 jps, jmap, jhat을 알고 있으면 큰 도움이 된다. 이 분석 도구들은 JDK 디렉토리에 포함되어 있다. (일부 버전이나 플랫폼에서는 제공되지 않을 수 있다고 한다. 또 한 추후 버전에서는 제공되지 않을 수도 있다는 말이 있다.) 자바를 정상적으로 설치했다면 $PATH 중 하나에 설치가되어 있을 것이다. 만약 없다면 $JAVA_H.. 2019. 4. 7.
[Java(자바)] ThreadLocal 사용법 설명과 예제 자바를 비롯한 다양한 언어에서 멀티 쓰레드 프로그래밍을 지원한다. 소스코드의 다양한 부분을 멀티 쓰레드로 수행하면 많은 장점들을 얻을 수 있다. 하지만 멀티 쓰레드 프로그램을 작성할 때 가장 고민해야 하는 부분이 있으니 바로 공유 리소스로의 접근제어다. 그 중에 특정 변수 값을 세팅하고 읽는 과정을 동기화해야 하는 경우를 가장 많이 만나게 된다. synchronized 키워드를 이용하여 특정 메소드 혹은 코드 블록을 동기화 시키는 방법은 잘 알고 있을 것이다. Synchronized 키워드와 더불어 자바에서 제공하는 멀티 쓰레드를 위한 도구로 ThreadLocal이 있다. ThreadLocal은 각 쓰레드가 자신만의 전역변수를 만들어 사용할 수 있는 기능을 제공해준다. 우선 코드를 살펴보자. 이 코드를 .. 2019. 1. 27.
[Java(자바)] Deque(덱/데크) 자료구조 카프카의 소스코드를 보던 중 내부에서 Deque 클래스를 사용한 부분을 보게 되었다. Deque(덱 혹은 데크)은 Double-Ended Queue의 줄임말로 큐의 양쪽으로 엘리먼트의 삽입과 삭제를 수행할 수 있는 자료구조를 의미한다. 덱(Deque)은 어떤 쪽으로 입력하고 어떤 쪽으로 출력하느냐에 따라서 스택(Stack)으로 사용할 수도 있고, 큐(Queue)로도 사용할 수 있다. 특히 한쪽으로만 입력 가능하도록 설정한 덱을 스크롤(scroll)이라고 하며, 한쪽으로만 출력 가능하도록 설정한 덱을 셸프(shelf)라고 한다. Java에서의 Deque 자바에서의 덱은 인터페이스로 구현되었다. 덱 자료구조의 여러 연산들을 정의한 Deque 인터페이스가 있고 이를 구현한 ArrayDeque, LinkedBl.. 2019. 1. 23.
Exception in thread "main" java.lang.IllegalAccessException: 하둡(Hadoop) 관련 프로그램을 작성하다가 다음과 같은에러를 만나게 되었다. Exception in thread "main" java.lang.IllegalAccessException: Class org.apache.hadoop.util.RunJar can not access a member of class TestClass with modifiers "public static" at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:110) at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:262) at java.lang.reflect.Accessib.. 2019. 1. 20.
[Java(자바)] Java Unsupported major.minor version 52.0 에러 Java로 프로그램을 작성해서 다른 플랫폼으로 배포하는 경우 자주 발생하는 에러로 Java Unsupported major.minor version 52.0 에러가 있다. 톰 캣(Tomcat)이나 하둡 맵리듀스(MapReduce) 처럼 Java 프로그램을 작성하고 Jar 파일로 묶어서 전송후 실행하는 경우에 간혹 볼 수 있는 에러다. 요약하면 Java 버전이 맞지 않아서 생기는 문제다. Jar 파일을 생성한 빌드 환경에서의 JDK 버전이 실제 실행하는 환경에서의 JDK 버전보다 높아서 생기는 문제다. Java SE 8 (JDK 1.8)에서 빌드한 Jar 파일을 Java SE 7 (JDK 1.7)이 설치되어 있는 환경에서 실행하려고 하면 위와 같은 문제가 발생한다. 대체로 개발환경은 최신으로 맞춰서 개발하.. 2019. 1. 19.
[Java(자바)] SimpleDateFormat 사용법, 멀티쓰레드 환경에서의 예제 Java를 이용해서 프로그래밍을 하다보면 날짜 데이터를 다뤄야 할 때가 많다. 날짜를 쉽게 파싱하고 다루기 위해 SimpleDateFormat 클래스를 많이 사용한다. 이번 포스트에서는 SimpleDateFormat 클래스의 사용 예제와 멀티쓰레드에서 고려해야 할 사항에 대해서 다뤄보겠다. SimpleDateFormat은 java.text.DataFormat 이라는 abstract 클래스를 상속받은 concrete 클래스다. 이름에서 알 수 있듯이 간단하게(Simple) 날짜 포맷을 다룰 수 있는 메소드를 제공한다. SimpleDateFormat 간단한 예제 (문자열 to Date 객체) 간단한 예제를 살펴보자. 이 코드를 실행하면 다음 결과를 얻을 수 있다. 1572534000000 코드를 살펴보면 ".. 2019. 1. 16.
반응형