Java - ¤¿¤Þ¤Ë¤Ã¤¡£
2008-05-28 Wed
¢£ Groovy
groovysh ¼Â¹Ô»þ¤Ë¤È¤¢¤ëjar¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤·¤¿¤¤¡¥
${user.home}/.groovy/lib ¤ËÃÖ¤¯¤Î¤Ï·ù¡¥groovy¤Î¥·¥§¥ë¤«¤éľÀÜ¥í¡¼¥É¤¹¤ë¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤¿¤¤¡¥
¤Ê¤ó¤Ç¤Á¤ç¤Ã¤È¥Æ¥¹¥È¤·¤¿¤¤¤È¤¤Ë¡¤groovy ¤òΩ¤Á¾å¤²¤Æ¤¤¤ë¤Î¤Ë¡¤¤¤¤Á¤¤¤Á¤½¤³¤Ëjar¥Õ¥¡¥¤¥ë¤òÃÖ¤«¤Ê¤¤¤È¤¤¤±¤Ê¤¤¤Î¤«¤¬¤ï¤«¤é¤Ê¤¤¡¥
¡Ölib/ext¤Ëjar¥Õ¥¡¥¤¥ë¤òÃÖ¤¯¤Ê¡×¤È¤¤¤¦¤Î¤ÈƱ¤¸ÌäÂ꤬µ¯¤³¤ë¤È»×¤¦¤Î¤Ë¡¥¡¥¡¥
FAQ¤ÎClass Loading¤Î¹àÌܤˤ¢¤Ã¤¿¡¥
¤³¤ó¤Ê´¶¤¸¤Ç¥í¡¼¥É¤Ç¤¤¿¡¥
groovy> file = new File("path/to/jarfile");
groovy> this.class.classLoader.rootLoader.addURL(file.toURL());
2008-05-27 Tue
¢£ ¥í¡¼¥×: ÍýÏÀ¤È¼ÂÁ© ¡½ ¥¹¥È¥ê¥ó¥°¤Î½èÍý¤Ë Ropes for Java ¤ò»ÈÍѤ¹¤ëÍýͳ¡¢¤½¤·¤Æ»ÈÍѤËŬ¤·¤¿¾ò·ï
¤¤¤Þ¤¤¤Á¡¤¥í¡¼¥×¤Î»È¤¤Æ»¤¬¤è¤¯¤ï¤«¤é¤ó¡¥
2008-01-25 Fri
¢£ javax.tools ¤ò»È¤Ã¤ÆÆ°Åª¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òºîÀ®¤¹¤ë
Java SE 6 ¤Ï¤â¤¦ÉáµÚ¤·¤Æ¤¤¤ë¤Î¤À¤í¤¦¤«¡¥Ì¤¤À¤Ë Java SE 5 ¤À¤Ã¤¿¤ê¤¹¤ë¡¥
¤½¤ì¤Ë¤·¤Æ¤â¡¤javax.tools ¤Ï»È¤Ã¤Æ¤ß¤¿¤¤¡¥
2008-01-08 Tue
¢£ djUnit
º£¤Þ¤Ç JUnit ¤Ï¥¤¥Þ¥¤¥Á»È¤¤¹þ¤ó¤Ç¤¤¤Ê¤«¤Ã¤¿¤±¤É¡¤¥«¥Ð¥ì¥Ã¥¸¤ò´Êñ¤Ë¸«¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¤È¥Æ¥¹¥È¤ËÖȤޤäƿ§¡¹¥Æ¥¹¥È¤ò¤ä¤ê¤¿¤¯¤Ê¤ë¡¥
2007-11-03 Sat
¢£ Online updating API ¤½¤Î3
¤è¤¯¹Í¤¨¤ë¤È Maven2 ¤Î¥À¥¦¥ó¥í¡¼¥Éµ¡Ç½¤¬´Êñ¤Ë»È¤¨¤ë¤Î¤Ç¤¢¤ì¤Ð¤½¤ì¤¬Îɤ¤¤Ê¤¡¡¥
¤¿¤À¡¤¥À¥¦¥ó¥í¡¼¥É¤¹¤ë¤Ë¤Ï pom.xml ¤ò½ñ¤¤¤¿¤ê¡¤¥í¡¼¥«¥ë¥ê¥Ý¥¸¥È¥ê¤òÍѰդ·¤Ê¤¤¤È¤¤¤±¤Ê¤¤¤Î¤Ç¡¤½é´ü¥³¥¹¥È¤¬¹â¤¤¤«¤Ê¤¡¤È»×¤Ã¤¿¤ê¤â¤¹¤ë¤Ê¤¡¡¥
¤È¸À¤¤¤Ä¤Ä¡¤¤Á¤ç¤Ã¤ÈÄ´¤Ù¤¿ÄøÅ٤ǤϤ褯ʬ¤«¤é¤ó¡¥
2007-11-02 Fri
¢£ Online updating API ¤½¤Î2
¤¤¤¯¤Ä¤«¤½¤ì¤Ã¤Ý¤¤¤Î¸«¤Ä¤±¤¿¡¥
- jxuf - Java eXtensible Update Framework
- stableUpdate autoupdate tool
¤±¤É¡¤³«È¯¤¬»ß¤Þ¤Ã¤Æ¤¤¤¿¤ê¡¤»È¤¤Êý¤¬¤ï¤«¤é¤ó¤«¤Ã¤¿¤ê¡¤¥µ¡¼¥Ð¦¤ËÆþ¤ì¤Ê¤¤¤È¤¤¤±¤Ê¤µ¤²¤À¤Ã¤¿¤ê¡¥
ÂÓ¤Ëû¤·¤¿¤¹¤¤ËŤ·¤À¡¥
ref. [2007-11-01-1]
2007-11-01 Thu
¢£ Online update API ¤Ê¤ó¤¾¤Ê¤¤¤â¤Î¤«
Eclipse ¤Î online ¥¤¥ó¥¹¥È¡¼¥ë¤Î¤è¤¦¤Ê¤â¤Î¤ò¼Â¸½¤Ç¤¤ëAPI¤Ï¤Ê¤¤¤Î¤«¤Ê¡¥
Íߤ·¤¤µ¡Ç½¡¥
- ¥Í¥Ã¥È¥ï¡¼¥¯¾å¤Ë¥×¥é¥°¥¤¥ó¤Î¤è¤¦¤Ê¤â¤Î¤òÃÖ¤¤¤Æ¤ª¤¤¤Æ¡¤É¬Íפ˱þ¤¸¤Æ°ìÍ÷ɽ¼¨¤¹¤ë¡¥
- Íߤ·¤¤¤â¤Î¤Ë¥Á¥§¥Ã¥¯¤òÆþ¤ì¤Æ¡¤É¬Íפʤâ¤Î¤ò¥À¥¦¥ó¥í¡¼¥É¤¹¤ë¡¥¥í¡¼¥«¥ë¤Ç¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Ï¤³¤Ã¤Á¤ÇŬÅö¤Ë¤¹¤ë¡¥
- ¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤¢¤ë¤â¤Î¤¬¥Ð¡¼¥¸¥ç¥ó¥¢¥Ã¥×¤·¤Æ¤¤¤ì¤ÐÄÌÃΡ¥¤³¤Ã¤Á¤«¤éʹ¤¤Ë¹Ô¤Ã¤Æ¤âÎɤ¤¡¥
¾ò·ï
- ÆÃÊ̤ʥµ¡¼¥Ð¤òÍѰդ·¤Ê¤¤¤³¤È¡¥HTTP¤¯¤é¤¤¤Ç¡¥
- Ê£¿ô¤Î¥µ¡¼¥Ð¤ËÂФ·¤ÆÊ¹¤¤Ë¤¤¤¯¤³¤È¤¬²Äǽ¡¥
¤Ê¤¤¤Ê¤éºî¤ë¤«¤Ê¤¡¡¥
2007-10-26 Fri
¢£ Java ¤Ç StAX
Java 5 ¤Çư¤«¤¹ Reference Implementation ¤È Java SE 6 ¤Îµóư¤¬°ã¤¦¡¥¡¥¡¥
:
XMLEventReader reader = ....
String hogehogeValue = null;
while(reader.hasNext()){
XMLEvent event = reader.peek();
if(event.isStartElement()){
StartElement startElement = event.asStartElement();
String tagName = startElement.getName().getLocalPart();
if(tagName.equals("hogehoge")){
hogehogeValue = reader.getElementText();
}
:
}
:
reader.nextEvent();
¤³¤ó¤Ê´¶¤¸¤Î¥×¥í¥°¥é¥à¤Ç¡¤Java 5¤Ç¤ÏÀµ¾ï¤Ëưºî¤¹¤ë¡¥
¤·¤«¤·¡¤Java SE 6 ¤Çư¤«¤¹¤È¾åµ¤Î9¹ÔÌÜ¡¤reader.getElementText()¤ò¼Â¹Ô¤·¤¿¤È¤¤Ë¡¤°Ê²¼¤ÎException¤¬È¯À¸¤¹¤ë¡¥
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[4,11]
Message: parser must be on START_ELEMENT to read next text
at com.sun.xml.internal.stream.XMLEventReaderImpl.getElementText(Unknown Source)
:
¾åµ¥³¡¼¥É¤Î 4 ¹ÔÌÜ reader.peek() ¤ò reader.nextEvent() ¤ËºÇ¸å¤Î°ì¹Ô reader.nextEvent() ¤òºï½ü¤¹¤ë¤È Java SE 6 ¤Ç°Õ¿ÞÄ̤ê¤Ë¤Ê¤ë¡¥
¤¿¤À¤·¡¤Java 5 ¤Ç¼Â¹Ô¤¹¤ë¤È
javax.xml.stream.XMLStreamException: Precondition for readText is nextEvent().getTypeEventType() == START_ELEMENT (got 4)
at com.bea.xml.stream.XMLEventReaderBase.getElementText(XMLEventReaderBase.java:87)
:
¤Ë¤Ê¤ë¡¥¤Ê¤ó¤Ç¤³¤ó¤Êº¬ËÜŪ¤Êµóư¤¬ÊѤï¤ë¤ó¤À¤è¡¼¡¥¤¦¤Ã¤¶¡¼¡¥
2007-07-03 Tue
¢£ IT¶È³¦¤Î¥¹¡¼¥Ñ¡¼¥¹¥¿¡¼ Duke¡¤¼«Í³¤Ë¤Ê¤ë
¤¤¤Ä¤Î´Ö¤Ë¤ä¤é¡¥¥ß¥Ã¥¡¼¤È¤Ï°ã¤Ã¤Æ¤¤¤í¤ó¤Ê¤È¤³¤í¤Ë´Êñ¤Ë½Ð¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤Î¤«¡¥
2007-07-01 Sun
¢£ Java ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò Windows exe ¤Ë¥é¥Ã¥×¤¹¤ë
NSIS Compiler¤ÈJelude¤ò»È¤¦¤³¤È¤Ç¤Ç¤¤¿¡¥
ºîÀ®¤·¤¿exe¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¿§¡¹¤ä¤Ã¤Æ¤ß¤ÆÍý²ò¤·¤¿Æ°ºî¡¥
- exe¥Õ¥¡¥¤¥ë¤Ë¤Ï»ØÄꤷ¤¿jar¥Õ¥¡¥¤¥ë¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¡¥¤½¤Îjar¥Õ¥¡¥¤¥ë¤Ï¥³¥ó¥Ñ¥¤¥ë»þ¤Ënsi¥Õ¥¡¥¤¥ë¤ÈƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë¤È²¾Äꤷ¤Æ¤¤¤ë¤ß¤¿¤¤¤À¡¥
- ¼Â¹Ô¤¹¤ë¤È»ØÄꤷ¤¿jar¥Õ¥¡¥¤¥ë¤ò$TEMP¥Ç¥£¥ì¥¯¥È¥ê¤ËŸ³«¤¹¤ë¡¥
- javaw¥³¥Þ¥ó¥É¤Çjar¥Õ¥¡¥¤¥ë¤ò¼Â¹Ô¤¹¤ë¡¥
°Ê¾å¤Îưºî¤Ï nsi ¥Õ¥¡¥¤¥ëÆâ¤Ç»ØÄꤹ¤ë¡¥
¤Á¤Ê¤ß¤Ë¡¤nsi ¥Õ¥¡¥¤¥ë¤Ï jelude ¤Ç¥Æ¥ó¥×¥ì¡¼¥È¤¬¼ê¤ËÆþ¤ë¡¥¥³¥ó¥Ñ¥¤¥ë¤Ï nsis ¤ËÉÕ°¤ÎIDE¤Ç¹Ô¤Ã¤¿¡¥
¤½¤Î¾¤Î¤¤¤í¤ó¤ÊÀßÄêÊýË¡¤â½ñ¤«¤ì¤Æ¤¤¤ë¤Î¤Ç¡¤ÊØÍø¤½¤¦¤À¡¥
¥é¥¤¥»¥ó¥¹¤Ïpublic domain¤Ê¤Î¤Ç¡¤¤É¤ó¤Ê¾ì¹ç¤Ç¤â°Â¿´¤·¤Æ»È¤¨¤ë¡¥
¤½¤Î¤Û¤«¤ÎJava exe wrapper ¤Ï¤³¤³¤Ç¾Ò²ð¤µ¤ì¤Æ¤¤¤ë¡¥
2007-03-30 Fri
¢£ FindBugs
»È¤Ã¤Æ¤ß¤¿¡¥°Ê²¼¤ÎÊó¹ð¤¬¤µ¤ì¤¿¡¥
Dm: Method invokes System.exit(...) System.exit(...) ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¤¤¤Þ¤¹¡£ ¤³¤Î¥á¥½¥Ã¥É¤ÏJavaVM¤ò¶¯À©½ªÎ»¤µ¤»¤ë°Ù¡¢¥Æ¥¹¥È°Ê³°¤Ç¤Ï»ÈÍѤµ¤ì¤ë¤Ù¤¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
¤¸¤ã¤¡¡¤GUI¤Î¾ì¹ç¡¤¤É¤Ê¤¤¤»¤¨¤Ã¤Á¤å¡¼¤Í¤ó¡¥½ªÎ»¤µ¤»¤é¤ì¤Ø¤ó¤ä¤ó¡¥Exception ¤òÅꤲ¤Æ½ªÎ»¤È¤¤¤¦¤Î¤â½ª¤ï¤êÊý¤¬µ¤»ý¤Á°¤¤¤·¡¤Thread.currentThread().stop() ¤Ï¥³¥ó¥Ñ¥¤¥ë»þ¤Ë·Ù¹ð¤¬½Ð¤ë¤·¡¥
2007-03-26 Mon
¢£ Jakarta Commons CLI
long option ¤·¤«»ØÄꤷ¤Æ¤¤¤Ê¤¤¥ª¥×¥·¥ç¥ó¤¬Ê£¿ô¸Ä¤¢¤Ã¤¿¤È¤¤Ë HelpFormatter ¤Ç¥Ø¥ë¥×¤ò½ÐÎϤ¹¤ë¤È¡¤long option ¤·¤«»ØÄꤷ¤Ê¤¤¥ª¥×¥·¥ç¥ó¤¬°ì¤Ä¤·¤«½ÐÎϤµ¤ì¤Ê¤¤¡¥
Ä´¤Ù¤Æ¤ß¤ë¤È HelpFormatter#renderOptions ¤ÎÃæ¤Ç Options#helpOptions ¤ò¸Æ¤Ó½Ð¤·¤Æ¤ª¤ê¡¤¤½¤Î¥á¥½¥Ã¥É¤Ï shortOptions.values ¤ò List ¤È¤·¤ÆÊÖ¤·¤Æ¤¤¤ë¡¥shortOptions ¤Ï short option ¤ò³ÊǼ¤·¤¿ Map ¤Ç¡¤long option ¤·¤«Í¿¤¨¤é¤ì¤Æ¤¤¤Ê¤¤¥ª¥×¥·¥ç¥ó¤Ï¥¹¥Ú¡¼¥¹°ì¤Ä¤Î short option ¤È¤·¤Æ°·¤ï¤ì¤Æ¤¤¤ë¤è¤¦¤Ê¤Î¤Ç¡¤long option ¤·¤«»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¥ª¥×¥·¥ç¥ó¤¬Ê£¿ô¸Ä¤¢¤Ã¤¿¾ì¹ç¡¤ÌµÍý¤Î¤è¤¦¤À¡¥
¤Ç¡¤¤É¤¦¤·¤è¤¦¡¥Options#helpOptions ¤Ï¥Ñ¥Ã¥±¡¼¥¸»ØÄê¤Î¥¢¥¯¥»¥¹À©¸æ¤Ê¤Î¤Ç¡¤¥ª¡¼¥Ð¡¼¥é¥¤¥É¤Ç¤¤Ê¤¤¡¥¤È¤Ê¤ë¤È HelpFormatter ¤Î renderOption ¤Ç helpOptions ¤ò¸Æ¤Ó½Ð¤·¤Æ¤¤¤ëÉôʬ¤ò getOptions ¤ò»È¤¦¤è¤¦¤ËÊѤ¨¤ë¤·¤«¤Ê¤¤¤Î¤«¡¥Ì¯¤ËáÚ¤¤Éôʬ¤Ë¼ê¤¬ÆÏ¤¤¤Æ¤Ê¤¤¤ó¤À¤è¤Ê Commons Cli¡¥CommandLine ¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤¬ protected ¤¸¤ã¤Ê¤«¤Ã¤¿¤ê¡¥
ñ¤Ë Options#helpOptions ¤ò°Ê²¼¤Î¤è¤¦¤ËÃÖ¤´¹¤¨¤¿¤¤¤À¤±¤Ê¤Î¤Ë¡¦¡¦¡¦
@Override
List helpOptions(){
return new ArrayList( getOptions() );
// return new ArrayList( shortOptions.values() );
}
2007-03-05 Mon
¢£ jar ¥Õ¥¡¥¤¥ë¤ò¹¹¿·¤·¤è¤¦¤È jar uf ¤¹¤ë¤È
jar: `-u' mode unimplemented.
¤Ê¤É¤È¸À¤ï¤ì¤Æ¥Ó¥Ã¥¯¥ê¤·¤¿¡¥
¤Ç¡¤Ä´¤Ù¤Æ¤ß¤ë¤ÈSun¤ÎJDK¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ëjar¤¸¤ã¤Ê¤¯¤Æ¡¤fastjar¤À¤Ã¤¿¤Ã¤Ý¤¤¡¥Áᤤ¤Î¤Ï¤¤¤¤¤ó¤À¤±¤É¡¤Æ±¤¸¥³¥Þ¥ó¥É̾¤Ë¤¹¤ë¤Ê¤è¤Ê¡¼¡¥
PATH ¤ò JDK ¤Î bin ¤¬Á°¤ËÍè¤ë¤è¤¦¤ËÀßÄꤷ¤Ê¤ª¤·¤Æ¡¤Sun ¤Î jar ¤ò»È¤¦¤è¤¦¤Ë¤·¤Æ²ò·è¡¥
2007-01-07 Sun
¢£ Ä´¤Ùʪ
¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç java ¥³¥Þ¥ó¥É¤ò¥¿¥¤¥×¤·¤Æ¼Â¹Ô¤·¤¿¾ì¹ç¤È jar ¥Õ¥¡¥¤¥ë¤ò¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤·¤Æ javaw ¤Çµ¯Æ°¤·¤¿¾ì¹ç¤ò¶èÊ̤¹¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¤Î¤«¤Ê¡¥
¤É¤Ã¤«¤Ç¶èÊ̤Ǥ¤ë¤È´üÂÔ¤·¤Æ¤¤¤ë¤ó¤À¤±¤É¡¤¤É¤¦¤Ê¤ó¤À¤í¤¦¡©
Á´Á³³Îǧ¤·¤Æ¤¤¤Ê¤¤¤±¤É¡¤¶èÊ̤Ǥ¤ë¤È¤¹¤ì¤Ð¥·¥¹¥Æ¥à¥×¥í¥Ñ¥Æ¥£¤«¡©
2007-01-06 Sat
¢£ Java Swing Tips
JTable ¤Î¥½¡¼¥È¤È¤«¡¤JTabbedPane ¤ËÊĤ¸¤ë¥Ü¥¿¥ó¤òÉÕ¤±¤ëÊýË¡¤È¤«¡¤¿§¡¹ºÜ¤Ã¤Æ¤¤¤ë¡¥Java Swing Hacks ¤ò¤è¤ê¿¼¤¯¤·¤¿´¶¤¸¡¥
2006-12-17 Sun
¢£ Eclipse 3.1 ¢ª NetBeans 5.5
º£¤Þ¤Ç Eclipse ¤ò»È¤Ã¤Æ¤¤¤¿¤Î¤À¤¬¡¤Java SE 6 ¤¬½Ð¤¿¤Î¤òµ¡¤Ë NetBeans 5.5 ¤Ë°Ü¹Ô¤·¤¿¡¥
°Ü¹Ô¤ËÍפ¹¤ëºî¶È¤Ï¡¤¤Û¤È¤ó¤É¤Ê¤¯¡¤º£¤Þ¤Ç Eclipse ¤Ç³«È¯¤·¤Æ¤¤¤¿¥×¥í¥¸¥§¥¯¥È¤ò´Êñ¤Ë NetBeans ¤Ë°Ü¹Ô¤Ç¤¤¿¡¥
»ä¤¬ºîÀ®¤¹¤ë¥×¥í¥¸¥§¥¯¥È¤Î¤Û¤È¤ó¤É¤Ï Maven2 ¤Ç´ÉÍý¤·¤Æ¤ª¤ê¡¤Eclipse ¤ò»È¤Ã¤Æ¤¤¤¿¤È¤¤Ï
mvn eclipse:eclipse
¤Ç Eclipse ÍѤÎÀßÄê¥Õ¥¡¥¤¥ë¤ò Maven2 ¤ÇºîÀ®¤·¤Æ¤«¤é Eclipse ¤Ë¥¤¥ó¥Ý¡¼¥È¤·¤Æ¤¤¤¿¤Î¤À¤¬¡¤NetBeans ¤Ç¤Ï¤½¤ó¤Êºî¶È¤âɬÍפʤ¯ÉáÄÌ¤Ë Maven2 ¤Ç´ÉÍý¤·¤Æ¤¤¤¿¥×¥í¥¸¥§¥¯¥È¤ò¥¤¥ó¥Ý¡¼¥È¤Ç¤¤¿¡¥
Maven2 ¤Ç´ÉÍý¤·¤Æ¤¤¤¿¤«¤é°Ü¹Ô¤¬³Ú¤À¤Ã¤¿¤Î¤«¤â¤·¤ì¤Ê¤¤¤¬¡¥
2006-12-14 Thu
¢£ Java SE 6!
½Ð¤¿¡¥
XML¤ÈWeb¥µ¡¼¥Ó¥¹´ØÏ¢¤Î¥µ¥Ý¡¼¥È¤È¤«¡¤JavaScriptÂбþ¤È¤«¡¤¥Ç¥¹¥¯¥È¥Ã¥×´Ä¶¤Î³È½¼¤È¤«¡¤¿§¡¹¹¹¿·¤µ¤ì¤Æ¤¤¤ë¡¥
JVM Spec¤Ï¤¤¤¤²Ã¸º Third Edition ¤ò½Ð¤·¤ÆÍߤ·¤¤¤ó¤À¤¬¡¥
2006-11-08 Wed
¢£ Java ¥µ¡¼¥Ó¥¹¥×¥í¥Ð¥¤¥À
jar ¥Õ¥¡¥¤¥ë¤Ë¤Ï¥µ¡¼¥Ó¥¹¤Î¼ÂÁõ¤òÄêµÁ¤¹¤ë¹àÌܤ¬¤¢¤ë¡¥META-INF/services ¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ò´ð¤Ë¡¤¥µ¡¼¥Ó¥¹¤Î¼ÂÁõ¤ò¥æ¡¼¥¶¥×¥í¥°¥é¥à¤Ê¤·¤Ë¡¤¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¦¤ËÅÐÏ¿¤¹¤ë¤³¤È¤¬²Äǽ¤Ë¤Ê¤ëµ¡¹½¤Ç¤¢¤ë¡¥
Î㤨¤Ð Image I/O ¤ä Midi¡¤JNDI ¤Ê¤É¤Ç»È¤ï¤ì¤Æ¤¤¤ë¤è¤¦¤À¡¥¥¯¥é¥¹¥Ñ¥¹¤òÄ̤·¤Æ¤ª¤¯¤À¤±¤Ç¼ÂÁõ¥¯¥é¥¹¤¬ÆÀ¤é¤ì¤ë¤Î¤ÇÊØÍø¤Ã¤Ý¤¤¡¥
¤³¤Îµ¡¹½¤Î»È¤¤Êý¤Ï META-INF/services/ ¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤Ë SPI ¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹Ì¾¤Î¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¡¤¤½¤Î¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë¼ÂÁõ¥¯¥é¥¹¤Î̾Á°¤ò½ñ¤¯¡¥¤³¤¦¤¹¤ë¤³¤È¤Ç¥æ¡¼¥¶¥×¥í¥°¥é¥à¦¤ÇÆÃÊ̤ʽèÍý¤Ê¤·¤Ë¡¤ÆÃÄê¤Î¥¯¥é¥¹·Ðͳ¤Ç¼ÂÁõ¥¯¥é¥¹¤Î Class ¥ª¥Ö¥¸¥§¥¯¥È¤òÆÀ¤ë¤³¤È¤¬¤Ç¤¤ë¡¥
¤·¤«¤·¡¤ÆÃÄê¤Î¥¯¥é¥¹¤È¤¤¤¦¤Î¤¬¤Ï¤Ã¤¤ê¤·¤Ê¤¤¡¥jar ¥Õ¥¡¥¤¥ë»ÅÍͤΥµ¡¼¥Ó¥¹¥×¥í¥Ð¥¤¥À¤Î¹àÌܤǤÏÎã¤È¤·¤Æ°Ê²¼¤Î¥³¡¼¥É¤¬·ÇºÜ¤µ¤ì¤Æ¤¤¤ë¡¥
CharEncoder getEncoder(String encodingName) {
Iterator ps = Service.providers(CharCodec.class);
while (ps.hasNext()) {
CharCodec cc = (CharCodec)ps.next();
CharEncoder ce = cc.getEncoder(encodingName);
if (ce != null)
return ce;
}
return null;
}
¤³¤Î¤è¤¦¤Ê¥³¡¼¥É¤Ç CharCodec SPI ¤Î¼ÂÁõ¥¯¥é¥¹¤òÆÀ¤é¤ì¤ë¤Î¤À¡¥¤·¤«¤·¡¤Java SE 5 ¤Ë¤Ï Service ¤È¤¤¤¦¥¯¥é¥¹¤Ï¸ºß¤·¤Ê¤¤¡¥¤³¤Îµ¡¹½¤ò¼ÂºÝ¤Ë»È¤¦¤È¤¤Ë¤Ï¤É¤Î¥¯¥é¥¹¤ò»È¤¨¤Ð¤è¤¤¤Î¤«¤¬¤ï¤«¤é¤Ê¤«¤Ã¤¿¤Î¤ÇÄ´¤Ù¤Æ¤ß¤¿¡¥¡Ö¤³¤¦¤¹¤Ù¤¡×¤È¤¤¤¦Àµ¼°¤Êʸ½ñ¤Ï¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¤â¤Î¤Î¡¤¤Þ¤¡¤Ç¤¤¿¤Î¤ÇÎɤ·¤È¤¹¤ë¡¥
·ëÏÀ¤È¤·¤Æ¤Ï javax.imageio.spi.ServiceRegistry ¤ò»È¤¦¡¥Image I/O ¤Ï»È¤ï¤Ê¤¤¤Î¤Ë¡¤imageio ¥Ñ¥Ã¥±¡¼¥¸¤ò»È¤¦¤Î¤Ï²¿¤È¤âµ¤»ý¤Á°¤¤¤¬Â¾¤ËŬÅö¤Ê¥¯¥é¥¹¤â¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¤Î¤Ç»ÅÊý¤Ê¤¤¤«¡¥
°Ê²¼¡¤¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à
¡Ô³¤¤òÆÉ¤à¡Õ
2006-10-13 Fri
¢£ ASM
Á°¤«¤éÃΤäƤ¤¤¿¤â¤Î¤Î¡¤BCEL ¤Ç»öÂ¤ê¤Æ¤¤¤¿¤Î¤Ç»È¤Ã¤Æ¤¤¤Ê¤«¤Ã¤¿¤¬¡¤BCEL ¤Î Java 5 Âбþ¤ÎÃÙ¤µ¤Ë¤¤¤¤²Ã¸º·ùµ¤¤¬¤µ¤·¤¿¤Î¤Ç ASM ¤Ë¾è¤ê´¹¤¨¤Æ¤ß¤ë¡¥
¤Á¤Ê¤ß¤Ë¡¤Javassist ¤Ï¥á¥ó¥Ð¤Îºï½ü¤¬¤Ç¤¤Ê¤¤¤Î¤Ç¡¤¤¢¤Þ¤ê¾è¤ê°Ü¤ëµ¤¤Ë¤Ê¤é¤Ê¤¤¡¥´Êñ¤ËÁàºî¤Ç¤¤ë¤Î¤ÏÌ¥ÎÏŪ¤Ê¤ó¤À¤±¤É¡¥
ASM ¤ò»È¤¦¤Ë¤Ï Visitor ¥Ñ¥¿¡¼¥ó¤òÍý²ò¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë¡¥Decorator ¥Ñ¥¿¡¼¥ó¤â¤«¤Ê¡©
¤Ç¡¤¤À¡¥ASM ¤ò»È¤Ã¤Æ¥Ð¥¤¥È¥³¡¼¥É¤ò¤³¤Á¤ç¤³¤Á¤ç¤È¤¤¤¸¤Ã¤Æ¤ß¤ë¤È¡¤
- MethodVisitorA ¤Ç¥Õ¥£¡¼¥ë¥É¤ËÂФ¹¤ëÁàºî¤¬¹Ô¤ï¤ì¤ë¤´¤È¤Ë¡¤¤È¤¢¤ë½èÍý¦Á¤ò¹Ô¤ï¤»¤ë¡¥
- MethodVisitorB ¤Ç¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤´¤È¤Ë¡¤¤È¤¢¤ë½èÍý¦Â¤ò¹Ô¤ï¤»¤ë¡¥
¤³¤ÎÆó¤Ä¤Î Visitor ¤ò»È¤Ã¤Æ¤È¤¢¤ë¥¯¥é¥¹¤ò¹¹¿·¤·¤Æ¤ß¤¿¡¥
¦Á¤¬¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·¤Î½èÍý¤Î¤È¤¡¤MethodVisitorB ¤¬¦Á¤Ë¤è¤Ã¤ÆÄɲ䵤줿¤â¤Î¤ËÂФ·¤Æ¤â͸ú¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¡¥
someMethodCall(someField);
¦Á¡¤¦Â¤È¤â¤Ë System.out.println ¤È¤·¤¿¤È¤¡¤¾å¤Î1¹Ô¤ò¹¹¿·¤¹¤ë¤È
System.out.println("someMethodCall");
System.out.println("someFieldReferenced");
someMethodCall(someField);
¤È¤Ê¤Ã¤ÆÍߤ·¤¤¤È¤³¤í¤¬¡¤
System.out.println("SomeClass#someMethodCall");
System.out.println("PrintStream#println");
System.out.println("someFieldReferenced");
someMethodCall(someField);
¤È¤Ê¤Ã¤Æ¤·¤Þ¤¦¡¥¤³¤ì¤Ïº¤¤Ã¤¿¡¥»ÅÊý¤Ê¤¤¤Î¤Ç¡¤MethodVisitorA ¤È MethodVisitorB ¤½¤ì¤¾¤ì¤Ç¹Ô¤¦½èÍý¤òƱ¤¸¥¯¥é¥¹ MethodVisitorC ¤Ç¤ä¤ë¤è¤¦¤Ë¤¹¤ë¤È¡¤´õ˾Ä̤ê¤Î½ÐÎϤ¬ÆÀ¤é¤ì¤¿¡¥
¤¬¡¤¤³¤¦¤¹¤ë¤È MethodVisitorC ¤¬¤¹¤ó¤´¤¤Ä¹¤¯¤Ê¤ë¤Î¤Ç¡¤¤É¤¦¤·¤è¤¦¡¦¡¦¡¦¡¥





