'java'에 해당되는 글 11건

  1. 2008.11.12 웹 애플리케이션의 스레드 위험
  2. 2007.12.14 꼭 읽어야 하는 자바 책
  3. 2007.11.27 jmx client
AtomicReference를 사용하여 최후의 단일 작업 함정 막기

public PlayerScore getHighScore() {
ServletContext ctx = getServletConfig().getServletContext();
AtomicReference<PlayerScore> holder
= (AtomicReference<PlayerScore>) ctx.getAttribute("highScore");
return holder.get();
}

public void updateHighScore(PlayerScore newScore) {
ServletContext ctx = getServletConfig().getServletContext();
AtomicReference<PlayerScore> holder
= (AtomicReference<PlayerScore>) ctx.getAttribute("highScore");
while (true) {
HighScore old = holder.get();
if (old.score >= newScore.score)
break;
else if (holder.compareAndSet(old, newScore))
break;
}
}
Posted by foryamu
,

모든 프로그래머는 언제나 참조하게 되는 책들을 갖고 있게 마련이다. 아래 책들은 자바 프로그래머라면 반드시 갖추어야 할 것들이다. 값이 비싼 것도 있기 때문에 목록을 의도적으로 줄였다. 아주 필수적인 것으로만.

Thinking in Java (Bruce Eckel)

Thinking in Java, 3rd edition (Bruce Eckel; Prentice Hall PTR, 2002)
Eckel의 책은 매우 실용적이다. 자바에서 객체 지향을 사용하는 방법을 배울 수 있다. 그가 소개하는 개념들은 코드 샘플을 통해 설명된다. 자바가 언제나 올바른 해답이라고 생각하지 않는 사람들에게도 이 책은 매우 실용적이다. Eckel은 많은 언어들을 오랫동안 다루어왔고 확고한 객체 지향적 기술도 겸비하고 있다. 이 책에서 그 기술을 전수하고 있다. 현재 Thinking in Enterprise Java를 집필중이다.

Effective Java (Joshua Bloch)

Effective Java: Programming Language Guide (Joshua Bloch; Addison-Wesley, 2001)
좋은 자바프로그램을 만들기 위한 원리를 이해할 수 있는 책이다. 대부분의 내용은 다른 “자바 배우기” 책들에서 찾을 수 있는 것은 아니다. 예를 들어 overriding equals() 챕터는 내가 읽은 부분 중 최고였다. 추상 클래스 대신 인터페이스를 사용하는 것과 예외를 지능적으로 사용하는 것에 대한 실질적인 조언도 추가했다. Bloch는 Sun의 자바 플랫폼 라이브러리 아키텍트였기 때문에 이 언어에 정통해있다. 사실, 많은 책들을 저술하기도 했다. 이 책은 반드시 읽어야 한다.

The Java Programming Language (Ken Arnold, James Gosling, David Holmes)

The Java Programming Language (Ken Arnold, James Gosling, David Holmes; Addison-Wesley, 2000)
아마도 최고의 자바 서적일 것이다. 정식 스팩은 아니지만 각 언어 기능에 대한 소개가 읽을 만 하다. 엄격함과 교육적인 측면 사이에서 균형을 맞추면서 누구라도 자바 프로그래밍을 빠르게 이해할 수 있도록 했다.

Concurrent Programming in Java: Design Principles and Patterns (Doug Lea)

Concurrent Programming in Java: Design Principles and Patterns, 2nd edition (Doug Lea; Addison-Wesley, 1999)
모든 개발자가 병행성(concurrency)에 대해 알아야 하는 것은 아니고 모든 엔지니어들이 이 책의 수준까지 될 필요는 없지만 이 책만큼 병행 프로그래밍을 잘 다룬 책을 본 적이 없다. 관심이 있다면 읽어보기 바란다. Lea는 SUNY 사의 전문 프로그래머이며 병행성과 관련된 그의 작업과 생각들은 JDK 5.0 스팩(JSR166)에 투영되었다. 자바를 효과적으로 사용하는 방법에 대한 그의 생각은 귀 기울일 만 하다.

Expert One-On-One J2EE Design and Development (Rod Johnson)

Expert One-On-One J2EE Design and Development (Rod Johnson)
J2EE를 처음 접하는 사람들에게, 이 책은 J2EE가 무엇인지를 말해준다. 이 책은 수년간의 경험의 산물이며, 다른 저자들의 책들과는 달리 Johnson은 자신이 경험하지 않은 것은 이야기 하지 않는다. J2EE는 오버킬이 불필요할 때 자주 사용된다. Johnson은 이것을 피하는 방법을 설명한다.

Refactoring (Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts)

Refactoring: Improving the Design of Existing Code (Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts; Addison-Wesley, 1999)
Fowler는 Analysis Patterns를 비롯하여 가장 대중적인 프로그래밍 책을 저술했다. 코드 리팩토링은 프로그래머 훈련 목록에서는 무시되지만 프로그래머의 직관에 의존한다. 리팩토링은 결과를 변경하지 않고 기존 코드의 디자인을 향상시킨다. 이것은 코드를 깨끗하게 유지하는 최상의 방법이며 언제라도 변경이 가능하다. 언제 리팩토링을 하는가? 코드가 냄새를 풍길 때 마다 리팩토링 한다. Fowler의 책은 자바 코드 예제들로 가득 차 있다. Eclipse를 포함하여 많은 자바의 IDE는 Fowler의 리팩토링을 결합하고 있다.

Design Patterns (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides)

Design Patterns: Elements of Reusable Object Oriented Software (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides; Addison-Wesley, 1997)
전문 프로그래머들 사이 가장 유명한 책 중 하나이며 "the Gang of Four (GOF) book"으로 알려져 있다. 패턴은 일반적인 프로그래밍 문제들을 생각하고 해결하는 재사용 가능한 방식이다. 패턴을 배우는 것은 훈련이다. 이들을 잘 사용하는 것(또는 패턴을 사용하지 않아야 할 때를 아는 것)은 기술이다. 패턴을 무시하는 것은 실수이다. 이 책의 모든 예제들은 C++로 작성되었지만 자바도 여기서부터 출발했기 때문에 자바 언어에서 패턴을 구현하는 방법은 비교적 간단하다. 패턴에 익숙해지고 잘 사용하는 방법을 알면 프로그래밍이 쉬워진다. 또한 다른 프로그래머들과의 통신도 쉬워진다. 패턴은 일반적인 문제에 대한 일반적인 솔루션에 대해 함께 작업하는 많은 연관된 프로그래밍 개념을 설명하는 지름길이기 때문이다. Factory Method 같은 좀더 일반적인 것으로 유비쿼터스가 있다. 패턴을 효율적으로 사용하는 문제에 대해서는 Joshua Kerievsky의 Refactoring to Patterns을 참조하기 바란다.

Patterns of Enterprise Application Architecture (Martin Fowler)

Patterns of Enterprise Application Architecture (Martin Fowler; Addison-Wesley, 2002)
엔터프라이즈 개발은 작은 일회성 프로젝트 보다 훨씬 어렵다. 모든 엔터프라이즈 개발이 다 새로운 도전이라는 것은 아니다. 사실 하늘 아래 새로운 것은 없다. 많은 경우는 Fowler가 수행했던 프로젝트들이다. 그의 책에서는 일반적인 솔루션에 대해 이야기하고 사용법, 대안 등에 대한 가이드를 제공한다. Fowler는 Model View Controller (MVC) 같은 익숙한 패턴을 넣었고 like Page Controller 같은 비교적 새로운 것도 추가했다. 대부분의 패턴들과 마찬가지로 일단 읽고 나면 이미 알고있었던 것 처럼 생각하게 될 것이다.

UML Distilled (Martin Fowler)

UML Distilled: A Brief Guide to the Standard Object Modeling Language (Martin Fowler; Addison-Wesley 2003)
UML은 전문 프로그래머에게 중요한 시각적인 통신 언어이지만 과용 및 남용되고 있다. UML과 통신에 대해 많은 것을 알 필요가 없다. Martin은 아주 필수적인 것만 전달한다. 사실 대부분은 기본적으로 사용하고 있던 것이다. UML 예제의 모든 코드는 자바 코드이다.

Test-Driven Development: By Example (Kent Beck)

Test-Driven Development: By Example (Kent Beck; Addison-Wesley 2002)
테스트 중심의 프로그래밍은 프로그래밍의 혁명이고 더 나은 프로그래머가 될 수 있는 지름길이다. 코드를 작성하기 전에 테스트를 작성하는 것은 처음에는 어색하지만 강력한 개발 기술이다. 테스트를 먼저 작성함으로서 코드는 더욱 단순해진다. (Beck은 대표적인 테스트 중심의 자바 프레임웍인 JUnit도 공동 작성했다.) Beck의 책은 신뢰할 만한 자료이고 확장된 Money 예제는 자바이다. Beck은 테스트 중심을 생각하는 방식부터 설명한다. 바로 이것이 많은 프로그래머들이 겪는 첫 번째 어려움이기 때문이다.

The Pragmatic Programmer: From Journeyman to Master (Andy Hunt and Dave Thomas)

The Pragmatic Programmer: From Journeyman to Master (Andrew Hunt and David Thomas; Addison-Wesley 1999)
순수 객체 지향주의자가 된다는 것은 모험이다. 요즘 처럼 복잡한 세상에 어떤 일이든 이루려면 타협을 해야 한다. 가이드 원리는 실용적인 것으로 되어가고 있다. Hunt와 Thomas는 정말로 중요한 것을 타협하지 않고 이 일을 할 수 있는 방법을 이야기 한다. 이것은 자바 책은 아니지만 자바 개발자를 위한 정신 수양 책이라고 할 수 있다.

Peopleware: Productive Projects and Teams (Tom DeMarco and Timothy Lister)

Peopleware: Productive Projects and Teams (Tom DeMarco, Timothy Lister; Dorset House, 1999)
이 목록에 있는 다른 책들은 기술적이다. 하지만 이 책은 아니다. 기술적인 전문 용어들 속에서 그리고 약어의 바다 속에서, 소프트웨어 개발자들과 매니저들은 가끔씩 사람들이 소프트웨어를 만든다는 것을 잊는다. DeMarco와 Lister가 그 사실을 일깨워주고 그것이 차이를 만드는 이유를 설명한다. 이것은 실용적인 프로그래밍 책은 아니지만 자바 프로그래머라면 읽어야 한다. 프로그래머들을 위한 끝내주는 책들이 있겠지만 이것 역시 최고이다.

Posted by foryamu
,

jmx client

java 2007. 11. 27. 16:17
<H3 class=km><A name=aref1></A>JConsole JMX client</H3>In order to use the JConsole JMX client , this requires a JDK 1.5 installation, and executable to call is "jconsole" which lives in the $JAVA_HOME/jdk/bin directory. When done with stand alone OC4J the following option must be set.<BR><BR> <DIV class=kmnotebox>-Dcom.sun.management.jmxremote</DIV><BR>
Posted by foryamu
,