March 24th, 2008
현재 VM의 Window 목록 얻기

소스는 여기에서
public static List
위의 메소드는 Sun VM이거나 그를 기반으로 만든 VM에서만 동작하고 아니면 RuntimeException이 발생한다.
먼저 자바 1.6의 java.awt.Window에 있는 getAllWindows()를 호출하는데
이는 package private이기 때문에 refection을 사용하여 구현되었다.
이에 실패하면 AppContext에서 윈도우 목록을 얻어오는데 내부적으로 WeakReference가 사용되어 살짝 손봤다.
AppContext는 ThreadGroup당 하나씩 생성되는데 application일 경우는 하나만 존재하지만 애플릿의 경우는 보안영역에 따라 여러개 생성될 수 있다.