 |
 |
 |
 |
 |
 |
Java development 2.0: EC2 역시 임대할 수 있다. 이번 Java development 2.0 연재물에서 Andrew Glover는 Amazon EC2(Elastic Compute Cloud)의 개발 및 전개 과정을 실질적으로
소개합니다. EC2와 Google App Engine의 다른 점 그리고 Eclipse 플러그인과 간결한 Groovy 언어를 사용하여 간단한 웹 애플리케이션을
만들고 EC2에서 바로 실행하는 방법을 학습합니다. |
|
|
|
2009년 9월 29일 (화) |
|
| |
JPA 2.0의 형식이 안전한 동적 쿼리 영속적 Java 오브젝트에 대한 쿼리는 컴파일러에서 쿼리의 구문 정확성을 확인할 수만 있으면
형식이 안전합니다. 버전 2.0의 JPA(Java Persistence API)에는 최초로 Java 애플리케이션에서 형식이 안전한
쿼리를 활용하는 기능과 런타임에 동적으로 쿼리를 생성할 수 있는 메커니즘을 제공하는 Criteria API가
새롭게 추가되었습니다. 이 기사에서는 Criteria API 및 관련성이 높은 Metamodel API를 사용하여 형식이
안전한 동적 쿼리를 작성하는 방법에 대해 설명합니다. |
|
|
|
2009년 9월 22일 (화) |
|
| |
Apache Mahout 소개 학계와 기업에서 연구를 위해 많은 예산을 투자하고 있는 독보적인 분야일 경우, 데이터 및 사용자가 직접
입력한 내용을 통해 학습하는 지능형 애플리케이션이 점차 많이 사용되는 추세입니다. 많은 그룹의 사람들 중에서 공통점을 찾아내거나 대량의 웹 컨텐츠에
자동으로 태그를 지정하는 등의 작업을 수행하기 위해 그 어느 때보다도 클러스터링, 협업 필터링 및 분류와 같은 기계
학습 기술의 필요성이 부각되고 있습니다. Apache Mahout 프로젝트의 목표는 지능형 애플리케이션을 쉽고 빠르게
개발하는 것입니다. 이 기사에서는 Mahout의 공동 설립자인 Grant Ingersoll이 기계 학습의 기본 개념을 소개한 후
Mahout을 사용하여 문서를 클러스터링하고, 추천 항목을 만들고, 컨텐츠를 구성하는 방법에 대해 설명합니다. |
|
|
|
2009년 9월 8일 (화) |
|
| |
GWT fu, Part 1: Google Web Toolkit 다루기 GWT(Google Web Toolkit)를 이용하면 Java 언어를 사용하여 브라우저에서 실행하는 리치 클라이언트 사용자 인터페이스를 구현할 수 있습니다. 두 부분으로 구성된 이 기사에서
David Geary는 GWT 최신 버전을 간단하게 소개하고 데스크탑 형태의 웹 애플리케이션을 구현하는 방법을 설명합니다. |
|
|
|
2009년 9월 1일 (화) |
|
| |
Google App Engine for Java: Part 3: 영속성과 관계 데이터 지속성은 엔터프라이즈 환경에서 확장 가능한 애플리케이션을 전달하기 위해
반드시 갖추고 있어야 하는 능력입니다. Google App Engine for Java를 소개하는 Rick Hightower의
시리즈 중 마지막 기사인 이 기사에서는 App Engine의 최신 Java 기반 지속성 프레임워크에 대해
설명합니다. 현재 프리뷰 릴리스의 Java 지속성이 아직 충분한 기능을 제공하지 못하는 이유를 살펴본
후 App Engine for Java 애플리케이션의 데이터를 지속적으로 유지하기 위해 수행할 수 있는 작업의
데모를 살펴봅니다. 이 기사에서는 JDO API를 사용하여 Contact 오브젝트를 지속적으로 유지하고, 쿼리하고,
업데이트하고, 삭제하는 방법을 다루므로 Part 2에서 작성한 연락처 관리 애플리케이션이 실행되고
있어야 합니다. |
|
|
|
2009년 8월 25일 (화) |
|
| |
Java development 2.0: Google App Engine 시작하기 오픈 소스 솔루션과 그 인프라스트럭처 덕택에 Java 개발의 특성 변하고 있으며 더 나은 소프트웨어를 낮은
비용으로 신속하게 제공하는 것이 가능해졌다. Andrew Glover는 이러한 현상이 누적되어 생긴 영향력을 요약한
용어인 Java development 2.0을 만들었으며 이와 관련된 일부 도구와 기술에 관한 새로운 시리즈를
시작하였습니다. 첫 번째 기사에서는 Java development 2.0의 도래를 예고하고 Java용 Google App Engine을 사용하여
그 개념을 실현하는 방법을 설명합니다. |
|
|
|
2009년 8월 18일 (화) |
|
| |
Google App Engine for Java: Part 1: 새로운 시작 얼마 전까지만 해도 Google App Engine은 Python 개발자만을 위한 것이었기에 조금은
암울한 시기였습니다. 그러나 2009년 4월에 Google Inc.에서 클라우드 컴퓨팅 플랫폼에 대한 문호를
Java 개발자에게도 개방했습니다. 세 편의 기사로 구성된 이 시리즈에서는 Java 기술 저자이자 강사인 Rick
Hightower가 Java 기반 개발을 위한 이 안정적이고 강력하면서도 재미 있는 플랫폼을 소개합니다. 이
기사에서는 Google App Engine for Java를 확장성 높은 킬러 애플리케이션의 전개 플랫폼으로 사용하기에
적합한 이유를 살펴본 후 Google Plugin for Eclipse를 사용하여 GWT(Google Web Toolkit)와 Java Servlet
API를 기반으로 하는 두 가지 예제 애플리케이션을 작성합니다. 애플리케이션을 처음부터 작성하는 과정과
애플리케이션을 전개하여 최대 5백만 개의 보기를 조정하는 과정을 통해 Google App Engine for Java의
진정한 가치를 알 수 있습니다. (게다가 이 제품은 무료 버전입니다.) |
|
|
|
2009년 8월 11일 (화) |
|
| |
Google App Engine for Java: Part 2: 킬러 애플리케이션 작성하기 Google App Engine for Java와 같은 클라우드 플랫폼의 가장 중요한 특징은 매우 많은
비용과 노력을 들이지 않고도 전문가 수준의 킬러 애플리케이션을 상상하고, 개발하고, 전개할
수 있다는 것입니다. Google App Engine for Java를 소개하는 세 편의 기사 중 이 두 번째 기사에서는
기존 예제를 설명했던 Part 1과는 달리 Google App Engine for Java를 사용하여
간단한 연락처 관리 애플리케이션을 작성 및 전개하는 과정을 단계별로 안내합니다. |
|
|
|
2009년 8월 11일 (화) |
|
| |
팁: JBoss 4에서 JBoss 5로 마이그레이션하기 EJB 코드를 JBoss 5로 마이그레이션하고 싶습니까? 전개 및 실행에 필요한
코드를 구할 수 없습니까? 그렇다면 이 팁을 활용하십시오. 혹은 JBoss 5를 처음 접해본
사용자로서 EJB 3 환경에 빠르게 적응하고 싶습니까? 이 팁에서는 JBoss 5에서 EJB 3
코드를 작성, 전개 및 실행하는 데 필요한 XML 전개 파일에 대해 자세히 설명합니다. |
|
|
|
2009년 7월 21일 (화) |
|
| |
JSF 2 fu, Part 3: 이벤트 처리, JavaScript 및 Ajax JSF(JavaServer Faces) 2 Expert Group의 회원인 David Geary가 JSF 2의 새 기능을
소개하기 위해 집필한 세 편의 기사로 구성된 시리즈 중 마지막 기사입니다. 프레임워크의 새로운
이벤트 모델 및 Ajax에 대한 내장 지원 기능을 사용하여 강력하고 재사용 가능한 구성 요소를 만드는
방법에 대해 설명합니다.
|
|
|
|
2009년 7월 14일 (화) |
|
| |
JSF 2 fu, Part 2: Templating 및 복합 구성 요소 JSF(JavaServer Faces) 2를 사용하면 templating 및 복합 구성 요소라는 두 가지 강력한
기능을 통해 쉽게 수정하고 확장할 수 있는 사용자 인터페이스를 구현할 수 있습니다. JSF 2의 새
기능을 다루는 3편의 기사로 구성된 시리즈의 두 번째 기사인 이 기사에서는 JSF 2 Expert Group의
회원인 David Geary가 웹 애플리케이션에서 templating 및 복합 구성 요소를 효과적으로 활용하는 방법을
보여 줍니다. |
|
|
|
2009년 6월 2일 (화) |
|
| |
JSF 2 fu, Part 1: 웹 애플리케이션 개발 합리화하기 JSF(JavaServer Faces) 버전 2.0에서는
강력한 Ajaxified 웹 애플리케이션을 쉽게 구현할 수 있습니다. 이 기사는 JSF 2.0 Expert Group 회원인
David Geary가 집필한 3편의 기사로 구성된 시리즈의 첫 번째 기사이며 JSF 2의 새 기능을 활용하는 방법에
대해 설명합니다. 또한 JSF 2 개발 작업을 합리화할 수 있도록 XML 구성을 어노테이션 및 규칙으로 대체하는
방법, 탐색을 간소화하는 방법 및 리소스에 쉽게 액세스하는 방법에 대해 설명합니다. 또한 애플리케이션에서
Groovy를 사용하는 방법에 대해서도 살펴봅니다. |
|
|
|
2009년 5월 12일 (화) |
|
| |
Dojo 1.x로 위젯 개발하기 Dojo JavaScript 툴킷을 사용하여 HTML 위젯을 개발하는 기본적인 방법을
설명하는 이 기사에서는 이 툴킷을 소개한 후 여러 예제를 통해 샘플 위젯부터 단계적으로
복잡한 위젯을 살펴보면서 개발 단계에서 발생할 수 있는 일반적인 문제를 찾아보고 해결합니다. |
|
|
|
2009년 4월 28일 (화) |
|
| |
XML: GWT와 PHP의 연결 고리 역할 GWT(Google Web Toolkit) 애플리케이션은 오랫동안 사용되어 온 Java 방식으로 서블릿에
연결하는 방법 외에도 PHP 웹 서비스를 사용하여 XML 형식으로 데이터를 주고 받을 수 있습니다. 이
기사에서는 Java 언어와 PHP로 XML 문서를 생성하고 처리하는 방법을 살펴봅니다. |
|
|
|
2009년 4월 7일 (화) |
|
| |
S3를 통해 간편하게 스토리지 만들기 Amazon S3(Simple Storage Service)는 웹 애플리케이션 개발자가 이미지, 비디오, 음악 및 문서와 같은
디지털 자산을 저장하는 데 사용할 수 있는 공개 서비스입니다. S3는 프로그래밍 방식으로 서비스와 상호 작용할 수
있도록 RESTful API를 제공합니다. 이 기사에서는 오픈 소스 JetS3t 라이브러리를 통해 Amazon의 S3 클라우드 서비스를
활용하여 데이터를 저장 및 검색하는 방법에 대해 설명합니다. |
|
|
|
2009년 4월 7일 (화) |
|
| |
사용자 정의 Ant 태스크를 사용해야 하는 이유와 사용 방법
|
|
|
|
2009년 3월 24일 (화) |
|
| |
JiBX 1.2, Part 2: XML 스키마를 Java 코드로 변환 XML 스키마 정의에서 코드를 생성하는 방법은 웹 서비스를 포함한 모든 유형의
XML 데이터 교환에 많이 사용되고 있습니다. 대부분의 데이터 바인딩 도구는 사용자의
애플리케이션과 관련이 없는 부분을 포함한 스키마의 모든 부분을 기반으로 엄격하게
구조화된 코드를 생성합니다. JiBX 1.2는 스키마를 자세히 해석한 후 불필요한 클래스
항목을 제거하여 정돈된 코드를 생성합니다. 불필요한 스키마 구성 요소를 쉽게 제거하기
위한 사용자 정의를 비롯하여 여러 가지 강력한 사용자 정의 기능을 생성된 코드에 사용할
수 있습니다. |
|
|
|
2009년 3월 3일 (화) |
|
| |
JiBX 1.2, Part 1: Java 코드를 XML 스키마로 변환 XML 스키마 정의는 대부분의 웹 서비스 양식을 포함한 많은 유형의 데이터
교환에 사용되는 기본 기술입니다. 그러나 XML 스키마가 복합 표준이며, 스키마 정의를
작성 및 수정하는 대부분의 도구가 Java 코드 작업에 사용하기에 적합할 정도로 강력하거나
편리하지 않습니다. JiBX 1.2의 새 기능을 사용하면 Java 코드에서 데이터 구조와 일치하는
높은 수준의 스키마 정의를 쉽게 생성할 수 있습니다. 그런 다음에는 JiBX 데이터 바인딩의
사용 여부와 관계 없이 스키마를 직접 사용할 수 있습니다. |
|
|
|
2009년 3월 3일 (화) |
|
| |
진화적 아키텍처와 발현적 설계: 아키텍처와 설계 조사하기(영문) 소프트웨어 아키텍처 및 설계에 대한 열띤 논의가 많이 이루어지고 있기는 하지만 명확한 해답을 찾지는 못하고 있습니다. 이 주제에 대한 대체 논의 방법을 찾기 위한 대화를 새롭게 시작하기 위해 진화적 아키텍처와 발현적 설계에 관한 연재 기사를 시작합니다. 진화적 아키텍처 및 발현적 설계는 책임이 따르는 마지막 순간까지 중요한 의사 결정을 미루는 애자일 기술입니다. 이 첫 번째 기사에서는 아키텍처와 설계를 정의한 후 연재 기사에서 다루게 될 주요 사항을 소개합니다.
학문으로서의 소프트웨어 개발이 복잡하게 얽혀 있는 여러 가지 어려운 주제를 아직까지 충분히 해결하지 못하고 있기 때문에 소프트웨어 아키텍처 및 설계에 대한 정의도 명확하게 내려져 있지 않습니다. 그러나 이들 주제에 대한 합리적인 논의를 시작하려면 논의의 출발점이 될 수 있는 주제가 있어야 합니다. 이 연재 기사에서는 진화적 아키텍처와 발현적 설계에 대한 논의를 진행하기 위해 먼저 몇 가지 정의, 고려 사항 및 기타 배경 정보에 대해 설명합니다.
|
|
|
|
2009년 2월 24일 (화) |
|
| |
사람을 위한 자동화: 전개 자동화 패턴, Part 2 Java 전개는 복잡하고, 오류가 발생하기 쉬우며, 수작업으로 진행되기 때문에
소프트웨어를 사용자에게 제공하기 전까지 많은 시간이 지연되기도 합니다. 2편의 기사
중 Part 2에서는 자동화 전문가인 필자가 Java 애플리케이션에 대한 원클릭 전개 기능을
제공하는 신뢰할 수 있고, 반복 가능하며 일관된 전개 프로세스를 개발하는 데 도움이
되는 추가 주요 패턴들에 대해 설명합니다. |
|
|
|
2009년 2월 10일 (화) |
|
| |
사람을 위한 자동화: 전개 자동화 패턴, Part 1 Java 전개는 복잡하고, 오류가 발생하기 쉬우며, 수작업으로 진행되기 때문에
소프트웨어를 사용자에게 제공하기 전까지 많은 시간이 지연되기도 합니다. 2편의 기사로
구성된 사람을 위한 자동화 시리즈의 Part 1에서는 자동화 전문가인 필자가 Java 애플리케이션에
대한 원클릭 전개 기능을 제공하는 신뢰할 수 있고, 반복 가능하며 일관된 전개 프로세스를
개발하는 데 도움이 되는 주요 패턴들에 대해 설명합니다. |
|
|
|
2009년 1월 13일 (화) |
|
| |
불필요한 코딩을 줄이자! 아파치 Commons 프로젝트의 Lang 라이브러리에 포함된, 실전을 통해 다듬어진 오픈 소스 유틸리티를 활용해 코딩을 줄여 봅니다. 다른 사람이 작성한 신뢰성 높은 코드를 재사용하면 여러분의 소프트웨어를 더욱 빨리 출시할 수 있고 오류도 줄일 수 있습니다. |
|
|
|
2008년 12월 16일 (화) |
|
| |
바쁜 자바 프로그래머를 위한 스칼라 입문: 계산기 만들기, Part 2 분야 특화 언어(domain-specific language, 약자로 DSL)는 많은 관심을 끄는 주제가 되었습니다. 함수 언어에 대한 떠들썩한 논의는 상당 부분 함수 언어로 분야 특화 언어를 만들 수 있다는 사실에 대한 것입니다. "바쁜 자바 프로그래머를 위한 스칼라 입문" 연재의 최신 편인 이 글에서는 "외부(external)" DSL을 구축하는 데 있어서 함수 언어의 위력을 보여 주기 위한 예제인 간단한 계산기 DSL을 계속 만들어 보면서 텍스트 입력을 실행하기 위한 AST 형태로 변환하는 문제를 다뤄봅니다. 텍스트 형태의 입력을 파싱해서 지난 글에서 만들어 본 해석기(interpreter)가 사용할 트리 구조로 바꾸기 위해, 이런 일을 위해 설계된 표준 스칼라 라이브러리인 파서 콤비네이터(combinator)를 소개합니다. (지난 글에서는 계산기 해석기와 AST를 만들어 보았습니다.) |
|
|
|
2008년 12월 2일 (화) |
|
| |
XML 구문을 분석할 때 발생하는 오류 처리하기 XML 파싱은 거의 대부분의 기업 애플리케이션에서 일부분입니다. 그렇지만 에러 처리는 그러한 애플리케이션에서 대부분 빠져 있습니다. SAX로 XML 파싱 에러를 처리하는 법을 배우겠습니다. 여러분의 애플리케이션에서 DOM, JAXP, 또는 XML을 처리하는 또 다른 API를 사용하더라도 도움이 될 것입니다. |
|
|
|
2008년 12월 2일 (화) |
|
| |
무복사 기법을 통한 효율적인 데이터 전송 이 글은 무복사(zero copy) 기법을 통해 리눅스와 유닉스에서 실행되는 I/O 위주의 자바 애플리케이션의 성능을 향상시키는 방법에 대해 설명합니다. 무복사 기법은 중간 버퍼 간의 불필요한 데이터 복사를 피하게 해 주고, 사용자 공간(user space)과 커널 공간(kernel space) 사이의 맥락 전환(context switch) 횟수를 줄여 줍니다. |
|
|
|
2008년 11월 25일 (화) |
|
| |
사람을 위한 자동화: 마법사 기반 설치 프로그램 사용하기 소프트웨어 설치는 많은 사용자에게 보통 고통스러운 일에 해당합니다. 여러분이 생성한 설치 패키지(소프트웨어 개발의 "마지막 일정")는 사용자에게 채택되거나 쓰레기통에 버려지는 갈림길에서 예전보다 나아질 수 있습니다. 이번 사람을 위한 자동화 기사에서, 자동화 전문가 Paul Duvall은 무료로 이용할 수 있는 오픈 소스 IzPack 도구를 사용하여 마법사 기반 설치 프로그램을 만들어 여러분의 소프트웨어를 사용자가 간단하게 설치할 수 있게 하는 방법을 살펴보겠습니다. |
|
|
|
2008년 11월 25일 (화) |
|
| |
자바 이론과 실습: 상태 의존형 웹 애플리케이션은 깨지기 마련인가? HttpSession은 서블릿 프레임워크가 제공하는 세션의 상태 관리 메커니즘입니다. 이것 덕분에 상태 의존형(stateful) 애플리케이션을 쉽게 작성할 수 있는 반면, 이를 자칫 오용하기도 쉽습니다. 많은 웹 애플리케이션에서 HttpSession을 충분한 조율 없이 사용하여 (자바빈 클래스처럼) 수정 가능(mutable) 데이터를 관리하므로, 잠재적으로 동시성 위험(concurrency hazards)을 안고 있습니다. |
|
|
|
2008년 11월 11일 (화) |
|
| |
사람을 위한 자동화: 지속적인 리팩터링 리팩터링은 기존 코드를 개선하는 방법으로 잘 수용된 실천법입니다. 하지만 일관적이고 반복적인 리팩터링이 필요한 코드를 어떻게 찾을까요? 이번 사람을 위한 자동화 기사에서는 역겨운 코드를 개선하는 예제를 통해 정적 분석 도구를 사용하여 리팩터링할 코드 냄새를 식별하는 방법을 살펴볼 것입니다. |
|
|
|
2008년 11월 4일 (화) |
|
| |
바쁜 프로그래머를 위한 스칼라 입문: 계산기 만들기, Part 1 분야 특화 언어(domain-specific language, 약자로 DSL)는 많은 관심을 끄는 주제가 되었습니다. 사람들이 함수 언어에 대해 이야기하는 상당 부분은 분야 특화 언어를 만드는 데 적용할 수 있느냐 하는 것입니다. 바쁜 프로그래머를 위한 스칼라 입문의 여덟 번째인 이번 글을 시작하면서 우선 "외부(external)" DSL을 구축하는 데 있어 함수 언어가 얼마나 효과적인지를 잘 보여주는 예제로 간단한 계산기 DSL을 만들어 봅니다. 이를 위해 스칼라의 새로운 특성인 "케이스 클래스(case classes)"를 살펴 본 후 함수 언어의 오랜 특성인 "패턴 일치(pattern matching)"를 다시 살펴 봅니다. |
|
|
|
2008년 10월 28일 (화) |
|
| |
자바 환경에서 XQuery 사용하기 XQuery API를 사용해 XML 문서를 쉽게 질의하고 검색할 수 있습니다. 그리고 썬의 자바용 XQuery API는 자바 애플리케이션에 이러한 기능을 가져다 줍니다. |
|
|
|
2008년 10월 28일 (화) |
|
| |
자바 이론과 실습: 제네릭스 해부, Part 2 자바 언어에 제네릭이 포함되었는데, 그 중 와일드카드는 혼란스럽기 그지 없는 부분입니다. 경계 지정 와일드카드(bounded wildcard) 두 가지("? super T"와 "? extends T") 중 하나를 잘못 선택하는 실수는 흔하게 저지르기 마련입니다. 독자들도 이런 실수를 범한 적이 있습니까? 전문가들조차 실수하게 마련이니 걱정하지 마십시오. 이 달에는 Brian Goetz가 실수를 피하는 법을 알려 줄 것입니다. |
|
|
|
2008년 10월 21일 (화) |
|
| |
바쁜 자바 프로그래머를 위한 스칼라 입문: 패키지와 접근 제한 지시어 실생활에서는 코드를 참조하고 관련 있는 코드끼리 묶을 수 있어야 합니다. 이 연재의 일곱 번째인 이번 글에서는 스칼라의 패키지와 접근 제한 지시어(access modifier)를 살펴봄으로써 그 동안 간과해 왔던 문제들을 바로잡아 봅니다. 그 다음에는 스칼라의 함수적 측면에 대해 계속해서 살펴봅니다. 이번에는 “apply” 개념을 간단하게 알아봅니다. |
|
|
|
2008년 10월 7일 (화) |
|
| |
JRuby와 스윙(Swing)으로 크로스 플랫폼 개발 루비로 웹과 콘솔 애플리케이션을 제작할 수 있지만, 또한 다수의 플랫폼에서 실행 가능한 복잡한 GUI 데스크톱 애플리케이션도 작성할 수 있습니다. JRuby 덕택에 루비 GUI 툴킷에서 자바 플랫폼이 제공하는 UI 도구도 사용할 수 있습니다. JRuby는 루비의 C 구현을 대신할 수 있는 안정된 대체 구현입니다. 본 문서에서는 Monkeybars를 소개하고, 이와 관련된 예제 애플리케이션도 더불어 제공합니다. Monkeybars는 JRuby와 스윙을 써서 애플리케이션을 제작하기 위한 라이브러리입니다. |
|
|
|
2008년 10월 7일 (화) |
|
| |
사람을 위한 자동화: 매우 중요한 부분을 병렬로 개발하기 대부분의 개발 팀이 버전 관리 시스템을 사용하여 코드 변경을 관리하지만 여러 개발자가 동일한 코드에 병렬적으로 손을 대면 상당한 골칫거리가 됩니다. 이번 사람을 위한 자동화 연재에서는 자동화 전문가 Paul Duvall이 무료로 사용할 수 있는 오픈 소스 서브버전(Subversion) 버전 관리 시스템을 사용하여 소스 코드를 효율적으로 태깅하고, 나누고, 병합하는 방법을 보여줄 것입니다. |
|
|
|
2008년 10월 7일 (화) |
|
| |
영속성 패턴, Part 2: 코드 재사용을 늘리고 성능을 높이자 2부로 된 이번 연재 중 Part 1에서는 현대적인 객체 관계형 매핑(ORM: object-relational mapping) 도구를 사용해 일관되고 간결한 도메인 모델과 영속성 티어(persistence tier)를 만들 수 있는 기본을 다뤘습니다. Part 2에서 필자는 도메인 모델의 행동으로 기본 도메인 엔티티와 좀 더 발전된 기능인 제네릭 DAO(Generic DAO)를 설명합니다. 또한 도메인 모델을 사용하는 데이터 검색(data-retrieval) 성능을 향상시킬 수 있는 전략을 공유합니다. |
|
|
|
2008년 9월 30일 (화) |
|
| |
WebSphere sMash에서 Java와 PHP 통합하기 WebSphere sMash 환경에서는 PHP 등의 유명한 웹 기술을 기반으로 하는 대화식 웹
애플리케이션을 빠르게 개발할 수 있으며 PHP 스크립트를 통해 기존 Java 자산을 재사용할 수도
있습니다. 이 기사에서는 Java Bridge를 소개한 후 PHP에서 Java 클래스에 액세스하는 방법을 보여 줍니다. |
|
|
|
2008년 9월 24일 (수) |
|
| |
RESTful한 웹 서비스 만들기 구상화 상태 전송(역주: 현재까지는 명확히 한국어로 번역되어 쓰이는 말은 없다)을 뜻하는 REST(Representational state transfer)는 메시지가 아닌 이름이 부여된 자원에 의존하는 느슨히 연결된(loosely coupled) 애플리케이션을 디자인하는 한 형식입니다. "RESTful"한 애플리케이션을 만드는 데에 가장 어려운 부분은 노출하고자 하는 자원을 결정하는 일입니다. 일단 하겠다고 마음먹었다면 오픈 소스 Restlet 프레임워크를 사용하는 게 RESTful한 웹 서비스를 만드는 데 있어 가장 손쉬운 방법입니다. 이 튜토리얼에서는 REST의 기본 개념에 대해 소개하고, Restlet을 이용해 단계별로 애플리케이션을 만들어 갈 것입니다. |
|
|
|
2008년 9월 23일 (화) |
|
| |
자바 이론과 실습: 제네릭스 해부, Part 1 자바 언어의 제네릭(generic)에서 가장 복잡한 측면 중 하나가 바로 와일드카드입니다. 와일드카드의 사용법도 복잡할 뿐 아니라 와일드카드 캡처(wildcard capture)와 관련된 에러 메시지 역시 혼란스럽기 그지 없습니다. 이번 자바 이론과 실습 연재에서는 베테랑 자바 개발자인 Brian Goetz가 javac에서 생성하는 괴상한 에러 메시지를 해독하고 제네릭을 쉽게 쓸 수 있는 몇 가지 비법과 우회 기법을 제시합니다. |
|
|
|
2008년 9월 16일 (화) |
|
| |
Ajax와 자바 개발을 간단하게, Part 3: DOM, 자바스크립트, JSP 태그 파일을 기반으로 동작하는 UI 만들기 본 연재의 Part 1에서 자바스크립트 코드를 사용하여 Ajax 요청을 보내고 Ajax 응답을 처리하는 방법을 살펴보았습니다. Part2 에서는 규약과 JSP 태그 파일을 사용하여 셋업과 설정을 최소화하는 형태로 HTML 폼을 생성하는 방법을 알아보았습니다. 이번 Part 3에서는, 서버 쪽 검증은 물론 자바스크립트 기반의 클라이언트 쪽 검증을 개발하는 방법을 살펴볼 것입니다. JSP 태그 파일을 사용하여 자바스크립트쪽을 보조하여 구현하겠습니다. 애플리케이션을 다시 시작할 필요 없이 변경이 있을 때 자동으로 다시 읽어 들이는 리소스-번들 사용법도 배우겠습니다. |
|
|
|
2008년 9월 16일 (화) |
|
| |
바쁜 자바 프로그래머를 위한 스칼라 입문: 컬렉션 타입 객체는 스칼라에서 중요한 역할을 합니다. 하지만 튜플(tuple), 배열, 리스트(list) 같은 함수적 타입도 마찬가지입니다. 이 Ted Neward의 인기 연재에서는 함수 언어에서 일반적인 타입을 스칼라에서 어떻게 지원하는지를 살펴보는 것을 시작으로 앞으로 스칼라의 함수 언어적 측면을 살펴 보려고 합니다. |
|
|
|
2008년 9월 9일 (화) |
|
| |
Ajax와 자바 개발을 간단하게, Part 2: 규약을 사용하여 설치와 설정을 최소화하자 웹 프레임워크는 대부분 그것을 사용하는 각기 다른 애플리케이션의 요구와 개발 스타일에 따라 가능한 최대로 유연하고 확장 가능한 형태가 되려고 합니다. 하지만 불행히도, 보통 이러한 요구 때문에 복잡도가 높아지고, 처리가 과도해지며, 설정 파일이 많아집니다. 본 기사는 JSTL(JSP Standard Tag Library)과 JSP 태그 파일을 사용해 데이터 바인딩, 페이지 내비게이션, 스타일 규약을 구현하는 방법을 보여줄 것입니다. 이것으로 개발과 유지보수가 더 쉬워질 수 있습니다. 독자들은 애플리케이션을 빠르게 수정할 수 있는 동적인 속성들을 사용하여 커스텀 JSP 태그를 만드는 방법을 익힐 것입니다. 추가로, 이 글의 마지막 절에는 Ajax를 사용하여 웹 폼을 제출하는 예제를 담고 있습니다. |
|
|
|
2008년 9월 2일 (화) |
|
| |
바쁜 자바 프로그래머를 위한 스칼라 입문: 구현 상속 스칼라는 자바 언어와 동등한 정도의 구현 상속을 지원합니다. 하지만 스칼라의 상속은 몇몇 특이한 점이 있습니다. 이번 글에서는 함수 언어 스타일과 객체 지향 언어 스타일을 섞으면서도 자바 플랫폼의 상속 모델에 정확히 대응되는 스칼라 식의 다형성(polymorphism)을 소개합니다. |
|
|
|
2008년 9월 2일 (화) |
|
| |
IBM Cognos SDK Validation 도구 (영문) IBM Cognos SDK를 사용해 Java로 작성된 명령행 유틸리티인 IBM Cognos Validation 도구를 다운받자. 이 도구는 Report Studio 검증 프로세스로 Content Store의 모든 보고서를 완벽히 검증할 수 있다. |
|
|
|
2008년 9월 2일 (화) |
|
| |
Ajax와 자바 개발을 간단하게, Part 1: JSP 태그 파일로 자바스크립트 코드 동적으로 생성하기 많은 웹 개발자가 자바 EE가 너무 복잡하고, 새로운 웹 컴포넌트를 작성하는 것이 어려우며, 기존의 것을 커스터마이징하는 것이 충분히 간단하지가 않고, 모든 변경 사항에 대해 재시작을 요하는 것에 불만을 토로합니다. 본 연재는 코드 생성기, 컨벤션, 스크립트 언어, 그리고 최신 JSP(JavaServer Pages) 기술을 사용하여 이런 어려움들을 해결할 간단한 솔루션을 제공하려고 합니다. 변경 사항이 있을 때, JSP 태그 파일은 애플리케이션을 재시작할 필요 없이, 자바 EE 서버에 의해 자동으로 다시 컴파일됩니다. 게다가, 여러분은 생성된 코드를 완전히 제어할 수 있으며, JSP 문법을 사용하고 있기 때문에 이런 가벼운 컴포넌트들을 쉽게 커스터마이징할 수 있습니다. |
|
|
|
2008년 8월 26일 (화) |
|
| |
Java XPath API XPath 식은 상세한 Document Object Model (DOM) 네비게이션 코드 보다 작성하기가 훨씬 더 쉽습니다. XML 문서에서 정보를 추출하는 가장 빠르고 간단한 방법은 자바 프로그램 안에 XPath 식을 삽입하는 것입니다. Java 5에는 XPath로 문서를 쿼리하는 XML 객체-모델 독립형 라이브러리인 javax.xml.xpath 패키지가 포함되었습니다. |
|
|
|
2008년 8월 25일 (월) |
|
| |
믿을 만한 자바 벤치마킹, Part 2: 통계와 해법 고성능 하드웨어의 시대라 할지라도, 프로그램 성능은 변함없는 관심사입니다. 두 편의 연재 중 두 번째인 본 문서에서는 벤치마킹 통계를 다루고, 사용자 코드 내에 벤치마크 코드를 포함하는(self-contained) 마이크로벤치마크부터 외부에서 전체 애플리케이션을 호출하는 코드에 이르기까지 다양한 자바 코드를 벤치마크할 수 있도록 프레임워크를 제공합니다. |
|
|
|
2008년 8월 19일 (화) |
|
| |
사람을 위한 자동화: 전자동 문서화 프로젝트 문서화는 소프트웨어 제품을 내놓을 때 종종 필요악이 됩니다. 하지만 문서를 버튼 클릭 한 번으로 작성할 수 있다고 상상해 보세요. 사람을 위한 자동화 연재에서, 자동화 전문가 Paul Duvall은 오픈 소스 도구를 이용해 어떻게 UML(Unified Modeling Language), 빌드 다이어그램, ERD(Entity-relationship diagram), 그리고 심지어 사용자 문서까지 생성할 수 있는지 설명합니다. |
|
|
|
2008년 8월 12일 (화) |
|
| |
영속성 패턴, Part 1: 현대적인 ORM 도구의 전략과 모범 사례 많은 개발자가 애플리케이션의 영속성 티어에서 객체 관계형 매핑(ORM) 도구를 사용하지만, 일부 개발자는 ORM을 어떻게 사용해야 하는지 혼란스러워 해서 불필요한 코드 중복을 만들기도 합니다. 필자는 영속성 티어를 많이 구축해본 경험을 바탕으로 영속성 패턴에 대한 이해와 모범 사례를 확실하게 제시합니다. 2부로 구성된 연재 중 1부인 이번 글에서는 일관성 있고, 간결한 도메인 모델과 영속성 티어를 구축하는 기본을 다룹니다. 2부에서는 이번 글에서 다룬 개념을 구축하고, 확장해 봅니다. |
|
|
|
2008년 8월 5일 (화) |
|
| |
믿을 만한 자바 벤치마킹, Part 1: 다양한 이슈 고성능 하드웨어의 시대에서조차 프로그램 성능을 고려하지 않을 수 없습니다. 두 편의 연재 중 첫 편을 다루는 본 문서에서는 자바 코드 벤치마킹과 관련된 여러 함정을 소개합니다. 2편에서는 벤치마킹 관련 통계를 다루고 자바 벤치마킹을 위한 프레임워크를 제시할 예정입니다. 거의 대부분의 새 언어는 가상 기계 기반이므로, 본 연재가 다루는 일반적인 원칙은 프로그래밍 커뮤니티 전반에도 중요한 시사점을 제공합니다. |
|
|
|
2008년 7월 29일 (화) |
|
| |
데이터 웹 서비스를 사용하는 pureXML을 위한 유니버설 서비스 유니버설 서비스를 구성, 테스트, 수정하는 방법을 소개합니다. |
|
|
|
2008년 7월 15일 (화) |
|
| |
사람을 위한 자동화: Ivy로 의존성 관리하기 여러 프로젝트와 도구 사이의 소스 코드 의존성들을 관리하는 것이 보통 큰 짐이 되기 마련인데, 더 이상 그럴 필요가 없습니다. 이번 사람을 위한 자동화 연재에서 자동화 전문가 Paul Duvall은 아파치 앤트(Ant) 프로젝트의 아이비(Ivy) 의존성 관리자를 사용하여 보통의 자바 프로젝트가 관리해야만 하는 무수히 많은 의존성을 어떻게 다룰 수 있는지 살펴볼 것입니다. |
|
|
|
2008년 7월 15일 (화) |
|
| |
Grails 마스터하기: Ajax를 가미한 다 대 다 관계 다 대 다(m:m) 관계는 웹 애플리케이션에서 신중하게 다뤄야 합니다. Grails 마스터하기의 이번 회에서 Scott Davis는 어떻게 하면 Grails로 성공적인 다 대 다 관계를 구현할 수 있는지 보여줍니다. GORM(Grails Object Relational Mapping) API와 백엔드 데이터베이스를 다루는 방법도 함께 살펴보겠습니다. 또한 Ajax(Asynchronous JavaScript + XML)를 일부 사용해 사용자 인터페이스를 효율적으로 개선하는 방법도 함께 알아보려 합니다. |
|
|
|
2008년 7월 1일 (화) |
|
| |
바쁜 자바 프로그래머를 위한 스칼라 입문: 특성(trait)과 동작(behavior) 스칼라는 단순히 JVM에서 함수적 개념을 사용할 수 있게 해 주는 것뿐만 아니라 객체 지향 언어 설계에 대해서도 현대적인 시각을 제시합니다. 바쁜 자바 프로그래머를 위한 스칼라 입문의 이번 글에서는 스칼라에서 특성(trait)을 이용해 어떻게 객체를 더 간단하고 쉽게 만들 수 있는지를 살펴봅니다. 앞으로 알게 되겠지만 특성은 자바 인터페이스와 C++의 다중 상속이라는 기존의 대조되는 개념과 비슷한 면도 있고 다른 면도 있습니다. |
|
|
|
2008년 6월 24일 (화) |
|
| |
사람을 위한 자동화: 전혀 귀찮지 않은 로드 테스팅 로드 테스팅은 보통 개발 주기 후반부 활동으로 취급됩니다. 하지만 실제로는 그럴 필요가 없습니다. 사람을 위한 자동화 연재의 이번 회에서는, 자동화 전문가 Paul Duvall이 주기적으로 JMeter 테스트를 실행하는 통합 빌드 작성을 통해 개발 주기를 통해 문제를 발견하고 고치는 방법을 설명할 것입니다. |
|
|
|
2008년 6월 17일 (화) |
|
| |
자바 이론과 실습: 포크 찌르기, Part 2 자바 7의 java.util.concurrent 패키지에 포크-조인 스타일의 병렬 분할을 돕는 프레임워크가 포함될 예정입니다. 저자인 Brian Goetz는 본 연재의 1편에서 여러 알고리즘을 분할하여 하드웨어 병렬을 효과적으로 활용하는 자연스러운 메커니즘으로 포크-조인의 원리를 소개했습니다. 이번에는 ParallelArray 클래스를 다룹니다. 이 클래스는 메모리 상의 자료 구조를 대상으로 한 병렬 정렬과 검색 작업을 단순화합니다. |
|
|
|
2008년 6월 10일 (화) |
|
| |
자바 이론과 실습: 포크 찌르기, Part 1 자바 7에는 java.util.concurrent 패키지에 포크-조인 스타일의 병렬 작업 분할을 돕는 프레임워크가 포함될 예정입니다. 이 추상화된 포크-조인 프레임워크는 하드웨어 병렬 기능을 효과적으로 활용하여, 알고리즘을 자연스럽게 분해하는 메커니즘입니다. |
|
|
|
2008년 6월 3일 (화) |
|
| |
WebSphere Service Registry and Repository V6.1로 비즈니스 모델 템플릿 만들기 (영문) 기업에 특화된 새 비즈니스 모델을 IBM WebSphere Service Registry and Repository로 만들어 자신의 비즈니스 구상을 나타내고 그것을 다른 구상과 관련지을 수 있습니다. WebSphere Service Registry and Repository의 거버넌스 기능을 이용해 이 모델들을 관리할 수 있습니다. 기본 비즈니스 모델은 WebSphere Service Registry and Repository로 표현한 것을 보여줍니다. 그런데 자신만의 모델은 어떻게 만들 수 있을까요? 이 글에서는 WebSphere Service Registry and Repository V6.1로 새 비즈니스 모델을 만들고 로드하고 업데이트하고 사용하는 방법을 설명합니다.
|
|
|
|
2008년 6월 3일 (화) |
|
| |
바쁜 자바 프로그래머를 위한 스칼라 입문: 루프 때문에 당황하지 말자! 스칼라는 자바 플랫폼을 위해 만들어진 언어입니다. 그 때문에 스칼라 문법은 자바 프로그래머가 편하게 느끼도록 설계되었습니다. 동시에 스칼라는 JVM에서 함수 언어 고유의 능력을 활용할 수 있게 해 줍니다. 물론 그런 함수적 개념에 익숙해지는 데는 시간이 걸리지만 말입니다. 바쁜 자바 프로그래머를 위한 스칼라 입문의 이번 글에서는 if, while, for 같은 제어문을 시작으로 자바와 스칼라 간의 미묘한 차이에 대해 소개합니다. 곧 알게 되겠지만 스칼라 제어문은 자바 제어문과 비교해서 더 유용하기도 하지만 복잡하기도 합니다. |
|
|
|
2008년 5월 27일 (화) |
|
| |
CSS와 자바스크립트, JSF를 사용하여 Ajax 애플리케이션 만들기, Part 2: Dynamic JSF 폼 2부로 이루어진 본 연재의 첫 번째 기사에서, 저자이자 자바 개발자인 Andrei Cloroiany는 JSF(JavaServer Faces)에서 스타일 속성을 사용하는 방법을 설명하고 그것들의 속성에 기본값을 적용하는 방법을 보여주었습니다. 이 연재의 두 번째 기사인 본 글에서는 표준 JSF 컴포넌트의 자바스크립트 관련 속성을 살펴보겠습니다. DOM(Document Object Model) API, 자바스크립트 그리고 CSS에 기반을 둔 몇 가지 웹 기술을 배울 것입니다. 웹 페이지를 다시 읽어들이지 않고 부가적인 JSF 컴포넌트를 숨기거나 보이는 방법, 클라이언트의 웹 브라우저에서 동작하는 검증을 구현하는 방법, 개발자들이 커스텀 컴포넌트를 만들어 웹 폼의 입력 요소에 도움말 메시지를 보여주는 방법을 알아볼 것입니다. |
|
|
|
2008년 5월 27일 (화) |
|
| |
XStream으로 자바 객체를 XML로 직렬화하기 XML 직렬화는 객체 퍼시스턴스와 데이터 전송을 포함한 무수히 많은 쓰임새가 있습니다. 그러나 일부 XML 직렬화 기술은 구현하기 어렵습니다. XStream은 자바 객체를 XML로 직렬화하거나 그 반대로 역직렬화할 수 있는 가볍고 사용하기 쉬운 오픈 소스 자바 라이브러리입니다. XStream을 설정하고, 이를 이용해 객체를 직렬화하고 역직렬화하는 방법을 배웁니다. 또한 설정 속성들을 XML 설정 파일에서 읽어오는 방법도 알아봅니다. |
|
|
|
2008년 5월 20일 (화) |
|
| |
Grails 마스터하기: Groovy Server Pages로 뷰 변경하기 Groovy Server Pages(GSP)는 Grails 웹 프레임워크에서 웹 페이지 부분을 담당합니다 Grails 마스터하기의 세 번째인 이번 회에서 Scott Davis는 GSP에 대해 자세하게 설명합니다. Grails TabLibs를 사용하고, GSP와 부분 코드 조각을 함께 섞어 사용하면서, (스캐폴딩으로) 자동으로 생성되는 뷰에 기본 템플릿을 커스터마이징하는 게 얼마나 쉬운지 살펴볼 것입니다. |
|
|
|
2008년 5월 6일 (화) |
|
| |
이클립스 플러그인이 OSGi에서 어떻게 동작하는지 이해하기 이클립스 통합 개발 환경(IDE)의 핵심과 이클립스 리치 클라이언트 플랫폼(RCP) 애플리케이션은 OSGi(Open Services Gateway Initiative) 명세서의 구현체에 의해 주도되었습니다. 본 기사는 이클립스 플랫폼 입장에서 바라본 플러그인이 무엇인지 살펴보는 것을 통해 이클립스와 OSGi의 관계를 살펴보고 이클립스 V2.1부터 오늘날의 OSGi 기반 구현체가 되기까지 플러그인의 진화 과정을 살펴보겠습니다. 또한, 이클립스와 함께 제공되는 부가기능과 함께, OSGi manifest.mf 파일 옵션을 설명하겠습니다. |
|
|
|
2008년 4월 29일 (화) |
|
| |
javax.tools를 이용한 동적 애플리케이션 생성 GUI에서 사용자가 임의의 계산식을 입력할 수 있는 애플리케이션처럼, 오늘날 많은 애플리케이션은 정적 기능 이상의 동적 기능을 요구합니다. javax.tools 패키지가 자바 소스 컴파일을 위한 표준 API로 자바 SE 6에 포함되었습니다. 이는 동적 기능 제공을 위한 제법 괜찮은 도구입니다. 이 글에서는 이 패키지의 주요 클래스를 소개하고, 파일 대신 자바 String에 저장된 자바 소스를 컴파일하기 위한 라이브러리를 작성하는 방법을 제시합니다. 끝으로, 이 라이브러리를 활용해 대화형 그래프 애플리케이션을 구현해 봅니다. |
|
|
|
2008년 4월 29일 (화) |
|
| |
바쁜 자바 프로그래머를 위한 스칼라 입문: 클래스 동작 자바 프로그래머가 스칼라를 이해하기 위해서는 우선 객체부터 쳐다보는 것이 자연스럽습니다. 이 연재의 두 번째인 이번 글에서는 언어의 효용은 새로운 기능을 통합할 수 있는 능력으로 평가할 수 있다는 언어 평가의 기본 전제를 따라 복소수(complex number) 지원 예를 살펴 봅니다. 그 과정에서 스칼라의 클래스 정의와 사용에 관한 흥미로운 사실들을 알게 될 것입니다. |
|
|
|
2008년 4월 22일 (화) |
|
| |
IBM Directory Server로 웹 애플리케이션에서 프록시 인증(가장) 활용하기 기업 전체의 전화와 메일 디렉토리 같은 LDAP 서비스에 접근하는 게이트웨이를 제공하는 웹 애플리케이션은 주로 LDAP “수퍼유저(superuser)” 계정을 사용해 인증이 이뤄지도록 디자인됩니다. 그 결과 사용자는 자신의 LDAP 권한 대신 더 높은 권한을 가진 계정을 통해 디렉토리를 읽고 업데이트합니다. IBM® Tivoli® Directory Server는 프로그래머가 특정 계정을 사용해 자신을 인증하는 애플리케이션을 작성하고 실제 유저 대신 운영하는 ‘프록시된 인증(RFC 4370)’이라는 강력한 기능을 제공해 LDAP 서버의 모든 권한 강화를 위할 수 있습니다. |
|
|
|
2008년 4월 15일 (화) |
|
| |
바쁜 자바 프로그래머를 위한 스칼라 입문: 객체 지향론자를 위한 함수 프로그래밍
자바 플랫폼은 전통적으로 객체 지향 프로그래밍의 영향권이었습니다. 하지만 최근에는 충실한 자바 언어
지지자조차도 애플리케이션 개발에 있어 가장 최근의 복고 추세인 함수 프로그래밍에 관심을 가지기 시작했습니다.
이번에 시작하는 연재에서는 함수와 객체 지향 기법을 혼합한 JVM을 위한 프로그래밍 언어인 스칼라를
소개합니다. 언어 소개와 함께 동시성(concurrency) 등 굳이 스칼라를 배워야 하는 이유를 설명하고,
스칼라를 얼마나 빨리 써먹을 수 있는지를 살펴봅니다.
|
|
|
|
2008년 4월 15일 (화) |
|
| |
새로운 IBM pureQuery를 사용해 자바 데이터베이스 개발의 생산성 높이기, Part 4:: Informix 데이터베이스용 Data Studio와 pureQuery 살펴보기 (한글) Informix 데이터베이스를 사용해 Data Studio와 pureQuery에 대해 완벽히 살펴볼 것입니다. Data Studio에서 데이터베이스를 사용해 애플리케이션을 빌드하는 것에 대해 알고 싶던 모든 것을 배워보겠습니다. |
|
|
|
2008년 4월 8일 (화) |
|
| |
Ropes: 이론과 실제 (한글) 자바의 String과 StringBuilder 클래스는 많은 문자열 데이터를 처리해야 하는 시스템에는 그다지 적합하지 않습니다. 이 경우 로프(rope) 자료 구조가 더 나은 대안이 될 수 있습니다. 이 글에서는 자바 플랫폼을 위한 로프 구현인 Ropes for Java를 소개하고, 성능 관련 이슈를 살펴 봅니다. 또, 해당 라이브러리를 효과적으로 사용하기 위한 지침을 제시합니다. |
|
|
|
2008년 4월 8일 (화) |
|
| |
Grails 마스터하기: GORM: 재미있는 이름, 진지한 기술 (한글) 좋은 웹 프레임워크에는 대부분 견고한 영속화(persistence) 전략이 필요합니다. Scott Davis의 Grails 마스터하기 연재 2회에서는 Grails 객체 관계 매핑(GORM: Grails Object Relational Mapping) API를 살펴봅니다. 어떤 방법으로 테이블 간 연관을 만들고, 데이터 유효성 검증을 강제하며(enforce), 관계형 데이터베이스를 변경하는 작업을 쉽게 해내는지 알아보겠습니다. |
|
|
|
2008년 4월 1일 (화) |
|
| |
코드 품질 향상을 위해: 행위 주도 개발의 모험 (한글) 테스트 주도 개발(TDD)은 실제로 위대한 생각이었지만, 몇몇 개발자는 단지 '테스트'라는 단어가 주는 개념적 도약을 극복하지 못했습니다. 이 기사에서 Andrew Glover는 TDD의 위력을 프로그래밍 실천 속에 자연스럽게 녹아들게 하는 방법을 보여줍니다. JBehave를 통해 행위 주도 개발을 시작하면서, 프로그램의 결과물이 아닌 행위에 주목할 때 일어나는 일에 대해 살펴보세요. |
|
|
|
2008년 3월 25일 (화) |
|
| |
JSF, CSS, 자바스크립트를 사용하는 정교한 Ajax 애플리케이션 Part 1: JSF 페이지 외관 개선하기 전형적인 웹 애플리케이션들은 CSS(Cascading Style Sheet)와 자바스크립트를 JSF(JavaServer Faces) 같은 서버 쪽 프레임워크와 함께 사용해야 합니다. CSS는 Ajax 또는 다른 애플리케이션에서 사용하는 웹 컴포넌트의 외관 특성을 변경하여 보기 좋고 눈에 띄도록 보여줄 수 있습니다. 2회로 구성된 이 기사의 Part 1에서는, 표준 JSF 컴포넌트에서 CSS와 관련된 속성을 살펴볼 것입니다. 그 외에 안에 들어 있는 컴포넌트의 기본 스타일을 정하는 커스텀 JSF 컴포넌트를 만드는 방법에 대해 알아보겠습니다. 이것을 배우면 웹 애플리케이션에 있는 모든 페이지가 일관되게 보이도록 설정하는 것이 매우 간편해질 것입니다. 이 기술을 사용해 다른 컴포넌트의 속성을 설정할 수도 있습니다. 이것에 관해서는 Part 2에서 다룰 것이고, 거기에서는 자바스크립트를 사용해 JSF 폼을 동적으로 만드는 방법을 보여줄 것입니다. |
|
|
|
2008년 3월 25일 (화) |
|
| |
J2EE 커넥터 아키텍처 소개 (한글) 이번 튜토리얼에서는 JCA(Java 2 Enterprise Edition Connector Architecture)를 살펴봅니다. JCA를 먼저 높은 수준에서 살펴보는 것을 시작으로, 엔터프라이즈급 시스템과 어떻게 통합되어, 아키텍처의 기본 요소로 작동되는지를 공부함으로써 J2EE 아키텍처에서 JCA의 역할을 살펴볼 것입니다. 이어지는 절에서는 각 요소에 대해 단계별 설명과 예제를 곁들여 좀 더 자세히 알아보겠습니다. JCA와 호환되며(JCA-compliant), 이용 가능한 시스템의 각 부분이 어떻게 함께 연동되는지 볼 수 있는 예제 애플리케이션을 살펴 봄으로써 마무리하겠습니다. |
|
|
|
2008년 3월 18일 (화) |
|
| |
Grails 마스터하기: 첫 번째 Grails 애플리케이션 구축하기 (한글) 자바 프로그래머는 최신 웹 개발 프레임워크에 적응하는 데 자신들이 가장 좋아하는 언어와 기존 개발 기반을 포기할 필요가 없습니다. 자바 전문가인 Scott Davis의 새로운 연재인 Mastering Grails의 1회에서는 Grails를 소개하고, 첫 Grails 애플리케이션을 구축하는 방법을 설명하겠습니다. |
|
|
|
2008년 3월 18일 (화) |
|
| |
자바 SE 6의 성능 모니터링 및 진단 (한글) 자바 SE 6(Java Platform, Standard Edition 6)은 성능에 초점을 맞춰 응용 프로그램을 모니터링, 감시하고 공통적인 문제를 진단하기 위해 확장된 도구들을 제공합니다. 이 기사에서는 자바 SE 플랫폼의 모니터링과 관리에 대한 기본적인 사항들을 소개하고, 자바 SE 6에서 보강된 사항들에 대한 상세한 정보를 제공합니다. |
|
|
|
2008년 3월 11일 (화) |
|
| |
Geronimo의 배신: GlassFish JSTL 1.2와 Apache Geronimo 2.0 통합 패키지 사용하기 (한글) 아파치 제로니모(Apache Geronimo) 팀은 새로운 자바 EE(Java™ Platform, Enterprise Edition) 5.0 스펙을 성공적으로 구현했습니다. 자바 EE 5에는 주목할 만한 기능이 많이 있지만 그 중 하나가 새로운 자바 표준 태그 라이브러리(Java Standard Tag Library, JSTL) 1.2 스펙입니다. JSTL 1.2의 핵심인 통합 표현식 언어 덕분에, JSTL의 기능들을 JSF(JavaServer Faces)와 함께 쓸 수 있게 되었습니다. 이 기사에서는, 자바 웹 기술의 역사를 통해 JSTL 1.2의 중요성을 알아보고, 또한 제로니모 팀이 JSTL 1.2를 지원하기 위해 글래스피시(GlassFish) JSTL 1.2 구현에 어떤 영향을 주었는지를 알아봅니다. |
|
|
|
2008년 3월 11일 (화) |
|
| |
이클립스를 사용해 아이폰 웹 애플리케이션 개발하기 (한글) 이클립스, Aptana의 플러그인 그리고 iUi 프레임워크를 사용해 아이폰 웹 사이트를 만드는 방법을 배웁니다. 아이폰에서 사용할 수 있는 Javadoc 뷰어 개발 과정을 통해 사용자 인터페이스 디자인를 위한 팁을 살펴보고 아이폰 개발의 미래에 들어보겠습니다. |
|
|
|
2008년 3월 4일 (화) |
|
| |
Java EE가 Web 2.0을 만났을 때! (한글) 표준 Java Platform, Enterprise Edition 5 (Java EE)-기반 방식으로 개발된 Web 2.0 애플리케이션들은 심각한 성능 및 확장성 문제에 직면해 있습니다. 이유는, Java EE 플랫폼의 디자인-특히, 동기식 API의 사용-을 지탱하고 있는 많은 원리들이 Web 2.0 솔루션의 요구 사항에 맞지 않기 때문입니다. 이 글에서는 Java EE와 Web 2.0 방식 간 차이에 대해 설명하고, 비동기식 디자인의 효과를 분석하며, 자바 플랫폼에 비동기식 웹 애플리케이션을 개발할 수 있는 몇 가지 솔루션을 평가해 봅니다. |
|
|
|
2008년 2월 26일 (화) |
|
| |
새로운 IBM pureQuery 툴을 사용하여 자바 데이터베이스 개발의 생산성 높이기, Part 3: pureQuery로 신속한 애플리케이션 개발 (한글) IBM pureQuery 플랫폼과 이클립스 도구를 사용하면 JDBC보다 코드 작성을 덜 하고도 간단하면서도 고성능의 데이터 액세스 레이어와 애플리케이션을 신속하게 만들 수 있으며 다른 어느 이클립스 기반 도구보다 더 높은 생산성을 얻을 수 있습니다. |
|
|
|
2008년 2월 19일 (화) |
|
| |
새로운 IBM pureQuery 툴을 사용하여 자바 데이터베이스 개발의 생산성 높이기, Part 3: pureQuery로 신속한 애플리케이션 개발 (한글) IBM pureQuery 플랫폼과 이클립스 도구를 사용하면 JDBC보다 코드 작성을 덜 하고도 간단하면서도 고성능의 데이터 액세스 레이어와 애플리케이션을 신속하게 만들 수 있으며 다른 어느 이클립스 기반 도구보다 더 높은 생산성을 얻을 수 있습니다. |
|
|
|
2008년 2월 19일 (화) |
|
| |
REST 서비스 작성하기 본 튜토리얼은 REST(Representation State Transfer)와 APP(Atom Publishing Protocol)의 개념에 대해 토론하고 서비스에 이것들을 적용하는 방법을 다룹니다. 또한 자바 기술을 사용하여 REST/APP 기반 서비스를 구현하는 방법도 살펴봅니다. |
|
|
|
2008년 2월 4일 (월) |
|
| |
사람을 위한 자동화: 자동화를 통한 신속한 전개 (한글) 자동화는 개발 팀만을 위한 것이 아니라, 소프트웨어를 개발에서 제품화 하는 데에도 적용할 수 있습니다. 이번 시간에는, 자동화 전문가 Paul Duvall이 Ant와 Java Secure Channel을 사용하여 여러 대상 환경에 소프트웨어를 원격에서 전개하는 방법을 설명합니다. |
|
|
|
2008년 2월 4일 (월) |
|
| |
새로운 IBM pureQuery 툴을 사용하여 자바 데이터베이스 개발의 생산성 높이기, Part 2: 자바 프로그램의 SQL 문제 탐지 및 수정하기 (한글) IBM pureQuery 기술과 툴을 사용하여, 자바 프로그램 내에서 SQL을 코딩 할 때 생기는 다양한 문제들을 탐지합니다. 제품 개발과 전개 사이클 동안 다양한 시나리오에서 데이터베이스 애플리케이션의 개발 생산성을 높이고, SQL 밸리데이션을 여러분의 필요에 맞게 개인화 합니다. |
|
|
|
2008년 2월 4일 (월) |
|
| |
XMLBeans에서 이벤트 받기 Eclipse에 Sudoku 게임 애플리케이션을 구현하고, eventing으로 사용자 인풋의 유효성을 검사하는 방법을 배워봅시다. |
|
|
|
2008년 2월 4일 (월) |
|
| |
이클립스 유로파로 웹 개발하기, Part 2: 이클립스를 위한 Java EE (한글) 웹 개발자가 어떤 기술을 결합하여 사용하는지에 상관없이 이클립스는 생산성을 높일 수 있는 최고의 통합 개발 환경(IDE)입니다. 3회 연재인 "이클립스 유로파로 웹 개발하기" Part 1에서 최신 이클립스 유로파로 자바 웹 애플리케이션을 신속하게 개발할 수 있는 방법을 다뤘습니다. Part 2에서는 PDT(PHP Development Toolkit)라 알려진 이클립스 플러그인의 다른 세트를 사용하여 얼마나 쉽게 PHP 애플리케이션을 개발할 수 있는지를 살펴보겠습니다. |
|
|
|
2008년 1월 29일 (화) |
|
| |
이클립스 유로파로 웹 개발하기, Part 2: PHP 개발 도구 (한글) 웹 개발자가 어떤 기술을 결합하여 사용하는지에 상관없이 이클립스는 생산성을 높일 수 있는 최고의 통합 개발 환경(IDE)입니다. 3회 연재인 "이클립스 유로파로 웹 개발하기" Part 1에서 최신 이클립스 유로파로 자바 웹 애플리케이션을 신속하게 개발할 수 있는 방법을 다뤘습니다. Part 2에서는 PDT(PHP Development Toolkit)라 알려진 이클립스 플러그인의 다른 세트를 사용하여 얼마나 쉽게 PHP 애플리케이션을 개발할 수 있는지를 살펴보겠습니다. |
|
|
|
2008년 1월 29일 (화) |
|
| |
새로운 IBM pureQuery 툴을 사용하여 자바 데이터베이스 개발의 생산성 높이기, Part 1: pureQuery 툴 개요 (한글) 자바 개발자를 지망하거나, 현재 자바 개발자라면 이 글이 도움이 될 것입니다. IBM pureQuery 툴로 SQL을 이용한 자바 프로그래밍의 생산성이 그 어느 때보다도 높아졌습니다. 자바 에디터에서 SQL과 자바 애플리케이션을 코딩하고, 동등한 생산성을 경험할 수 있습니다. 자바 에디터를 떠나지 않고, 에러가 없는 자바 애플리케이션과 SQL을 구현합니다. JDBC보다 훨씬 적은 코드로 간단한 데이터 액세스 레이어를 생성합니다. 정적인 SQL을 사용하여 애플리케이션 성능을 높이고, SQL을 사용하여 데이터베이스와 인-메모리(in-memory) 컬렉션에 액세스 합니다. |
|
|
|
2008년 1월 29일 (화) |
|
| |
pureQuery 이해하기, Part 2: 데이터 모델링으로 클래스 모델러 보조하기 pureQuery의 기능인 전통적인 클래스 모델링을 사용하여 데이터베이스 관계형 생성물들을 정의하는데 도움이 될 수 있습니다. |
|
|
|
2008년 1월 29일 (화) |
|
| |
지속적 통합으로 조기에 결함 발견하기 (한글) 지속적 통합(Continuous Integration, 이하 CI)이란 지속적으로 소스코드를 컴파일, 테스트, 검사, 배치하는 처리과정을 말합니다. 많은 CI 환경에서 이는 소스코드 관리 저장소에 변경 사항이 생기면 빌드가 새로 실행됨을 의미합니다. CI의 장점은 간단합니다. 비교적 관리하기 쉬울 때 소프트웨어를 어셈블해 보면 결함을 조기해 발견할 가능성이 매우 높아집니다. 본 튜토리얼은 Andrew Glover의 In pursuit of code quality 연재와 더불어 CI의 기초를 소개하고 최신 오픈 소스 기술을 사용하여 CI 처리과정을 설정하는 방법을 단계별로 설명합니다. |
|
|
|
2008년 1월 22일 (화) |
|
| |
jpa2web으로 Ajax J2EE 웹 애플리케이션 구현하기 J2EE Ajax 기반 웹 애플리케이션을 JPA-주석 빈에서부터 생성하는 새로운 오픈 소스 툴인 jpa2web을 배워봅시다. |
|
|
|
2008년 1월 22일 (화) |
|
| |
Acegi로 자바 애플리케이션 보안화 하기, Part 3: 자바 객체를 위한 액세스 컨트롤 (한글) Bilal Siddiqui는 자바 클래스의 인스턴스에 대한 액세스를 보안화 하는 방법을 통해 Acegi Security System을 세 편에 걸쳐 소개합니다. 자바 클래스로의 액세스를 보안화 해야 하는 이유, Spring이 자바 클래스의 인스턴스를 생성 및 보안화 하는 방식, 자바 애플리케이션에 클래스 보안을 추가하기 위해 Acegi를 설정하는 방법을 설명합니다. |
|
|
|
2008년 1월 22일 (화) |
|
| |
이클립스 유로파로 웹 개발하기, Part 1: 이클립스를 위한 Java EE (한글) 웹 개발자가 각광받는 시기입니다. 지금만큼 기술에 대한 선택 폭이 넓었던 적이 없었습니다. 굉장히 훌륭한 오픈 소스 웹 서버, 데이터베이스, 프로그래밍 언어, 개발 프레임워크가 많습니다. 어떤 기술 결합을 선호하든 생산성을 높일 수 있는 통합 개발 환경(IDE)이 있습니다. 이클립스(Eclipse)가 그 중 하나입니다. 자바 기술, PHP, 루비(Ruby)를 사용하여 웹 개발을 할 때 이클립스를 사용하는 방법에 관한 3부로 이뤄진 본 "이클립스 유로파(Europa)로 웹 개발하기" 연재의 1회에서는 이클립스의 최신 버전인 유로파를 통해 신속하게 자바 웹 애플리케이션을 개발하는 방법을 배웁니다. 여기서는 이클립스를 위한 Java EE 5를 사용하여 야구 통계를 추적하고 계산하는 웹 애플리케이션을 만들겠습니다. |
|
|
|
2008년 1월 15일 (화) |
|
| |
이클립스 유로파로 웹 개발하기, Part 1: 이클립스를 위한 Java EE (한글) 웹 개발자가 각광받는 시기다. 지금만큼 기술에 대한 선택 폭이 넓었던 적이 없다. 굉장히 훌륭한 오픈 소스 웹 서버, 데이터베이스, 프로그래밍 언어, 개발 프레임워크가 많다. 어떤 기술 결합을 선호하든 생산성을 높일 수 있는 통합 개발 환경(IDE)이 있다. 이클립스(Eclipse)가 그 중 하나다. 자바 기술, PHP, 루비(Ruby)를 사용하여 웹 개발을 할 때 이클립스를 사용하는 방법에 관한 3부로 이뤄진 본 "이클립스 유로파(Europa)로 웹 개발하기" 연재의 1회에서는 이클립스의 최신 버전인 유로파를 통해 신속하게 자바 웹 애플리케이션을 개발하는 방법을 배울 수 있을 것이다. 여기서는 이클립스를 위한 Java EE 5를 사용하여 야구 통계를 추적하고 계산하는 웹 애플리케이션을 만들 것이다. |
|
|
|
2008년 1월 15일 (화) |
|
| |
Acegi로 자바 애플리케이션 보안화 하기, Part 2: LDAP 디렉토리 서버 사용하기 (한글) Part 1을 기반으로, Acegi Security System의 고급 사용법을 배울 차례가 되었습니다. 이 글에서, Bilal Siddiqui는 유연한 고성능 자바 애플리케이션 보안을 위해 Acegi와 LDAP 디렉토리 서버를 결합하는 방법을 설명합니다. 액세스 컨트롤 정책을 작성하고, 이것을 ApacheDS에 저장하고 나서, 인증과 권한에 디렉토리 서버와 인터랙팅 하도록 Acegi를 설정하는 방법을 설명합니다. |
|
|
|
2008년 1월 15일 (화) |
|
| |
SSL on ISC, Part 1: SSL은 무엇이며, 왜 이것을 사용해야 하는가? (한글) 암호화, 인증서 기반 인증, 보안 협상을 제공하는 Secure Sockets Layer (SSL)를 사용하여 오픈 통신 채널에서 데이터 보안을 이룩해 봅시다. 본 시리즈 Part 1에서는 SSL을 설명하고, Integrated Solutions Console에 이를 구현해야 하는 이유를 설명합니다. 나머지 Part 2와 Part 3에서는, Integrated Solutions Console Versions 5.1과 Versions 6.0.1에 각각 SSL을 구현하는 방법을 설명합니다. |
|
|
|
2008년 1월 8일 (화) |
|
| |
AjaxTags로 Ajax 개발을 쉽게 (한글) 개발자와 사용자는 Web 2.0 시대에 웹 기반 애플리케이션의 가용성과 반응성에 대한 높은 기대를 갖고 있습니다. 지난 2년 동안 은둔 생활을 하지 않았다면 Asynchronous JavaScript + XML(Ajax)에 대해 들어보았을 것입니다. Ajax를 사용하여 브라우저 페이지의 재 로드 없이, 반응성 있고 동적인 브라우저 기반의 사용자 인터페이스를 구현할 수 있습니다. 이 글에서는 AjaxTags를 설명합니다. Java/JavaScript Library는 Ajax 기능을 JSP 페이지로 쉽게 통합할 수 있도록 해줍니다. |
|
|
|
2008년 1월 8일 (화) |
|
| |
바쁜 자바 개발자를 위한 db4o 가이드: 트랜잭션, 분산, 보안 db4o가 자바 엔터프라이즈 개발과 관련된 세 가지 문제점(트랜잭션, 분산된 데이터 관리, 웹 애플리케이션 보안)을 어떻게 다루는지를 설명합니다. |
|
|
|
2008년 1월 8일 (화) |
|
| |
사람을 위한 자동화: Continuous Integration 반패턴(anti-pattern) Continuous Integration (CI)가 프로젝트의 위험 요소를 줄이는 데는 매우 효과적이지만, 매일 매일의 코딩에 대해서는 큰 중요성을 두고 있습니다. 사람을 위한 자동화 시리즈에서는, 자동화 전문가이자, Continuous Integration: Improving Software Quality and Reducing Risk 의 공동 저자인 Paul Duvall이 CI 반패턴(anti-pattern)을 설명하고, 이를 피하는 방법을 설명합니다. |
|
|
|
2008년 1월 8일 (화) |
|
| |
Mylyn 2.0, Part 2: 자동화 된 콘텍스트 관리 (한글) Mylyn 2.0 릴리스 (전 Mylar)는 태스크들을 Eclipse로 완벽하게 통합함으로써 생산성을 강화했고, 이러한 태스크들의 콘텍스트를 자동으로 관리합니다. Mylyn 프로젝트 리더인 Mik Kersten은 Mylyn 사용 가이드를 업데이트 했습니다. Part 1에서는 Mylyn의 태스크 관리 장치와 Bugzilla 같은 저장소와의 통합을 설명했습니다. 두 번째 글에서는 Mylyn의 콘텍스트 관리 장치로 멀티 태스킹이 얼마나 쉬워지고, Eclipse에서 대규모 애플리케이션 작업을 할 때 정보 오버로드를 어떻게 줄이는지를 설명합니다. |
|
|
|
2007년 12월 31일 (월) |
|
| |
Graphical Editing Framework을 사용하여 Eclipse 기반 애플리케이션 생성하기 (한글) Graphical Editing Framework (GEF)를 사용하여 Eclipse 기반 애플리케이션을 구현하는 초기 단계를 설명합니다. GEF는 상태 다이어그램, 액티비티 다이어그램, 클래스 다이어그램, AWT용 GUI 빌더, Swing과 SWT, 프로세스 플로우 에디터를 포함하여, Eclipse용 다양한 애플리케이션을 구현하는데 사용되었습니다. Eclipse와 GEF는 모두 오픈 소스 기술입니다. 또한 IBM WebSphere Studio Workbench에도 포함되어 있습니다. |
|
|
|
2007년 12월 31일 (월) |
|
| |
로봇, 미로, subsumption 아키텍처 Simbad를 사용하여 빛 감지 및 미로 탐색 기능의 가상 로봇을 자바로 구현하여 subsumption 아키텍처의 로봇 디자인 개념을 실현합니다. |
|
|
|
2007년 12월 11일 (화) |
|
| |