
printf("hello world\n");
// 이것이 진정한 코드 인사
"serialVersionUID"이며, static, final 이어야 하며 long타입이다. InvalidClassExceptions을 유발할 수 있다.private으로 선언하기를 권장한다. 상속되어 쓰여지는 것은 유용하지 않고, 해당 클래스에서만 쓰일 것이기 때문이다.A serializable class can declare its own serialVersionUID explicitly by declaring a field named "serialVersionUID" that must be static, final, and of type long: InvalidClassExceptions
during deserialization. Therefore, to guarantee a consistent
serialVersionUID value across different java compiler implementations,
a serializable class must declare an explicit serialVersionUID value.
It is also strongly advised that explicit serialVersionUID declarations
use the private
modifier where possible, since such declarations apply only to the
immediately declaring class--serialVersionUID fields are not useful as
inherited members.AbstractExecutorService에서 invokeAll()의 인자는 원래 Collection<Callable<T>>였다. 이 때문에 invokeAll() 사용이 매우 번거로웠다. 정확히 Callable<T>를 매개변수로 지정하는 컬렉션을 써서 작업 집합을 구성해야 했기 때문이다. 자바 6에서는 시그너처가 Collection<? extends Callable<T>>로 변경되었다. 도대체 얼마나 이런 실수를 저지르기 쉬운가 보라. invokeAll() 메서드를 더 정확히 수정한다면, Collection<? extends Callable<? extends T>> 인자를 수용하도록 해야 한다. 후자의 코드가 흉하게 보일지는 몰라도, 사용자 코드에서 고정된 타입으로 굳이 감싸지 않아도 되는 장점이 있다.![]() |
자바 병렬 프로그래밍 - ![]() 더그 리 외 지음, 강철구 옮김/에이콘출판 |


Date formats are not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally.
따라서, 아래와 같은 코드는 문제를 유발할 수 있다.
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
public static final String calcFullAge(Date today, String s) {
...
String currentDate = sdf.format(today).substring(4);
...
}
다음과 같이 매번 인스턴스를 새로 생성하게 해주는 것이 좋다.

구글링으로 PHP의 사례, How to deprecate a function in PHP? 도 볼 수 있었다. 자바의 경우와 같은 문제를 다루지만, 해결 방식은 조금 달라보였다. 질문자가 만족한 답변은 PHP의 override_function() 이었다.DeprecationNotifier.logDeprecation = false;
<?php
override_function('strlen', '$string', 'return override_strlen($string);');
function override_strlen($string){
return strlen($string);
}
?>override_function 은 시스템 함수를 대치할 때 사용한다. 자바에서와 같이 상속이 전제되는 override가 아니다. 스프링 사용자라면 메소드 교체(Method Replacement)와 유사하다 느낄 수 있을 것이다.Sun talks of annotations as being an extension to the existing in Java. I disagree. Let’s define . Metadata is data about data. I consider the reflection API as something that expresses .
It tells you about classes and their methods. It tells you about the
types of arguments in your methods. It tells you about the structure of
your pre-existing Java code.

이 보다 눈에 띄는 것이 Marker 뷰의 등장이다. Marker 뷰를 이용하면, problems, bookmarks, tasks 뷰 셋을 통합해서 볼 수 있다.
아래는 Problems 뷰 개선사항 요약이다:
출처: http://download.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/eclipse-news-all.html