· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
zeta


1. Àо±â

ÀÌ ÆäÀÌÁöÀÇ ³»¿ëÀº Zeta ÆÐÅ°Áö¿¡ Æ÷ÇÔµÈ docs/README ¹®¼­ÀÇ ³»¿ë°ú °°½À´Ï´Ù. ´ë°³ À§Å° ÆäÀÌÁöÀÇ ³»¿ëÀÌ ´õ ÃÖ½ÅÀ̸ç, ´õ dzºÎÇÕ´Ï´Ù.

1.1. °³¿ä

Zeta´Â ÀÛÀº ¹Ì´Ï ÀÀ¿ëÇÁ·Î±×·¥À» ¸¸µé°í ±¸µ¿½Ãų ¼ö ÀÖ´Â ÅøÀÔ´Ï´Ù. Àͼ÷ÇÑ ÀÚ¹Ù ¾ð¾î¿Í SWT·Î ¼Õ½±°Ô ÇÁ·Î±×·¥À» ¸¸µé ¼ö ÀÖÀ¸¸ç, XML¸¸À» »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. Á¦ÀÛ ¹æ¹ýÀº ȨÆäÀÌÁö¿Í demo µð·ºÅ͸®ÀÇ ¿¹Á¦µéÀ» Âü°íÇϼ¼¿ä. Zeta Pure´Â JDK¿Í SWT°¡ Áö¿øµÇ´Â ¸ðµç Ç÷§Æû¿¡¼­ »ç¿ë °¡´ÉÇϸç, À©µµ¿ì¿ëÀ¸·Î´Â GCJ·Î ÄÄÆÄÀÏµÈ ¹ÙÀ̳ʸ®¸¦ ¹èÆ÷ÇÕ´Ï´Ù.

ÇöÀç ÀÌ ÇÁ·ÎÁ§Æ®´Â GCJ, SWT, BeanShell, CookXMLÀ» ÀÌ¿ëÇϸç, ÃßÈÄ Groovy, Jython, JavascriptµîÀ» ±âº» Áö¿øÇÒ ¿¹Á¤ÀÔ´Ï´Ù.

1.3. »ç¿ë¹ý

Zeta.exe³ª Zeta.jar¸¦ ½ÇÇàÇÕ´Ï´Ù.

1.4. °³¹ß ȯ°æ

Zeta 0.1 - 0.2 :
  • javac/jar´Â Sun J2SE 1.5.0_8À» »ç¿ëÇÕ´Ï´Ù.
  • Windows ¿¡¼­ Á¦À۵ǾúÀ¸³ª, OS Á¾¼ÓÀûÀÎ ÄÚµå´Â »ç¿ëÇÏÁö ¾Ê´Â ¸¸Å­ JDK¿Í SWT°¡ Áö¿øµÇ´Â ¸ðµç ȯ°æ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • ¸ðµâ ÀÛ¼º½Ã¿¡´Â ¿¡´Â OS µ¶¸³ÀûÀÎ ÄÚµå¶ó´Â Á¦ÇÑÀÌ ¾ø½À´Ï´Ù.
  • IDE ȯ°æÀº JEdit 4.3 pre6 ÀÔ´Ï´Ù. ÇÁ·ÎÁ§Æ® °ü¸® ±â´ÉÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¹Ç·Î ¹«½¼ ¿¡µðÅ͸¦ »ç¿ëÇÏµç »ó°üÀº ¾ø½À´Ï´Ù. ´Ü, ¸ðµç ¼Ò½º ÆÄÀÏ¿¡ UNIX Line Separator / UTF-8 Encoding ÀÌ ¿øÄ¢ÀÔ´Ï´Ù.
  • ¸ðµç zip ÆÄÀÏÀº 7-Zip 4.4.2·Î ÀÛ¼ºµÇ¾ú½À´Ï´Ù.
  • JAR ¹ÙÀ̳ʸ® ÀÛ¼ºÀ» À§ÇÑ ¸ÅÅ©·Î´Â zar.bat À̸ç, ³×ÀÌƼºê ¹ÙÀ̳ʸ® »ý¼ºÀ» À§ÇÑ ¸ÅÅ©·Î´Â zjc.bat ÀÔ´Ï´Ù. Á¶±Ý º¯°æÇÏ¸é ´Ù¸¥ OS¿¡¼­µµ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • SWT
  • GCJ, UPX : javacompiler ÇÁ·ÎÁ§Æ®ÀÇ javacompiler 0.8¿¡ Æ÷ÇÔµÈ °ÍÀ» »ç¿ëÇÕ´Ï´Ù. GCJ´Â Windows¿Í Linux¿ëÀÌ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.
  • BeanShell
    • bsh-core-2.0b4.jar
    • bsh-classgen-2.0b4.jar
    • bsh-classpath-2.0b4.jar
    • bsh-commands-2.0b4.jar
    • bsh-reflect-2.0b4.jar
    • http://www.beanshell.org
  • CookXML: XMLÀ» ÀÌ¿ëÇÑ SWT ¹× ºó¼Ð ½ºÅ©¸³ÆÃÀ» Áö¿øÇϱâ À§ÇØ »ç¿ëµË´Ï´Ù.

1.5. ÀúÀÛ±Ç

Zeta´Â GPL v2 ÇÏ¿¡ ¹èÆ÷µË´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº docs/LICENSE¸¦ Âü°íÇϼ¼¿ä.

1.6. ´Þ¶óÁø Á¡

0.1 : ÃÖÃÊ °ø°³ ¹öÀü. 0.2 :
  • SWT 3.1 / CookSWT 1.1.2 -> SWT 3.2 / CookSWT 1.2.1 ¾÷µ¥ÀÌÆ®.
  • ¼¼¼Ç ÀÚµ¿ °ü¸® : ½ÃÀ۽à ¸¶Áö¸· »ç¿ë ÈÄ Á¾·áÇÏÁö ¾ÊÀº ¸ðµâµéÀ» ºÒ·¯¿È ´Ü, ShellÀ» ¸®ÅÏÇÏ´Â ½ºÅ©¸³Æ® ¹× ¸ðµâ¿¡ ÇÑÇÔ.
  • ±âº» Import ÆÐÅ°Áö º¯°æ (config/import.bsh)
  • bsh, xml ÆÄÀÏ ³» ÇÑ±Û ¹®Á¦ ÇØ°á(file.encoding=utf8)
  • Àâ´ÙÇÑ ÄÜ¼Ö °³¼± ¹× µ¥¸ð º¯°æ
  • Äֿܼ¡ EvalError ¿Ü¿¡ Æ÷°ýÀûÀÎ Exception Ãâ·ÂµÊ.
  • (Native) ÆÄ½Ì ¹®Á¦ ÇØ°á, XML ¸ðµâ Á¤»ó »ç¿ë °¡´É
  • (Native) Pentium 2 ÃÖÀûÈ­ (-march=pentium2)

1.7. ¾Ë·ÁÁø ¹®Á¦Á¡

  • (Native) gnu/regexp/MessagesBundle.properties ¾øÀÌ ½ÇÇàµÇÁö ¾Ê´Â ¹®Á¦ DIARY - 'Native/Win32 : MessagesBundle Ŭ·¡½º ¹®Á¦(06.09.03)' Âü°í

2. Zeta¿ë ÇÁ·Î±×·¥ Á¦ÀÛ

ÇöÀç bsh¿Í cookswt¸¦ »ç¿ëÇÑ xml·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù. »ç¿ë¹ýÀº Æ®·¹ÀÌÀÇ zeta ¾ÆÀÌÄÜÀÇ ¸Þ´º¸¦ ¿­¾î Load¸¦ ¼±ÅÃÇÑ µÚ ÆÄÀÏÀ» ¼±ÅÃÇÏ¸é µË´Ï´Ù. ÄܼÖÀ» ¿­¸é ÇÁ·ÒÇÁÆ®¿¡¼­ ºó¼Ð ½ºÅ©¸³Æà ¹× ¿¹¿Ü ¹ß»ý µî¿¡ ´ëÇÑ ±â·ÏÀ» º¼ ¼ö ÀÖÀ¸¸ç, ¿©·¯ ¼ÐÀ» ¶ç¿î »óÅ¿¡¼­ zeta ¾ÆÀÌÄÜÀ» Ŭ¸¯ÇÏ´Â °ÍÀ¸·Î consoleÀ» Á¦¿ÜÇÑ ¸ðµç ¼ÐÀ» º¸ÀÌ°Ô Çϰųª °¨Ãâ ¼ö ÀÖ½À´Ï´Ù.

2.1. ¿¹Á¦µé

2.1.1. demo/HelloWorld1.bsh

zeta´Â bsh ÆÄÀÏÀ» ÀоîµéÀÏ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½Àº SWT·Î °£´ÜÇÑ Ã¢À» Ãâ·ÂÇÏ´Â bsh ½ºÅ©¸³Æ®ÀÔ´Ï´Ù.
class Hello{
        public Hello(){
                Display d = Display.getCurrent();
                Shell s = new Shell(d, SWT.SHELL_TRIM | SWT.TOOL);
                Label l = new Label(s, SWT.CENTER);
                s.setLayout(new FillLayout());
                String str = "Hello, Zeta!";
                l.setText(str);
                s.setText(str);
                s.pack();
                s.open();
        }
}
new Hello();
Ŭ·¡½º¸¦ ±»ÀÌ »ç¿ëÇÏÁö ¾Ê¾Æµµ µÇÁö¸¸, º¯¼ö¸í µîÀÇ Ãæµ¹À» ¹æÁöÇϱâ À§ÇØ ±ÇÀåÇÕ´Ï´Ù.

2.1.2. demo/HelloWorld4.xml

zeta´Â xml ÆÄÀÏÀ» cookswt¸¦ ÀÌ¿ëÇØ ÆĽÌÇÕ´Ï´Ù. ´ÙÀ½°ú °°ÀÌ ½ºÅ©¸³Æ®¸¦ xml¿¡ ³»ÀåÇÒ ¼ö ÀÖ½À´Ï´Ù.
<!-- original source by http://cookxml.sourceforge.net/cookbsh/ -->
<shell style="SHELL_TRIM | TOOL" text="Hello World!" size="320,240">
        <filllayout type="VERTICAL">
                <clabel id="label" style="BORDER | CENTER" text="Hello, Zeta! 4"/>
                <button text="Click!">
                        <bsh func="addSelectionListener">
                                import org.eclipse.swt.events.SelectionListener;
                                import org.eclipse.swt.events.SelectionEvent;
                
                                widgetSelected( e )
                                {
                                        label.setText(e.source.getText () + " Pressed");
                                }
                                widgetDefaultSelected( e )
                                {
                                }
                                return (SelectionListener)this;
                        </bsh>
                </button>
                <!-- calling an external BSH code (identical to the bsh code above) -->
                <!--button text="Button 2">
                        <bsh func="addActionListener" src="examples/cookbsh/action.bsh"/>
                </button-->
        </filllayout>
</shell>
¹öÆ°À» Ŭ¸¯Çϸé, LabelÀÇ ÅؽºÆ®°¡ "Click! Pressed"·Î º¯°æµË´Ï´Ù.

2.1.3. PropertyCat.xml

ÀÚ¹ÙÀÇ ÇÁ·ÎÆÛƼµéÀ» Ãâ·ÂÇÏ´Â °£´ÜÇÑ ¿¹Á¦.
<shell style="SHELL_TRIM | TOOL" text="PropertyCat" size="320,240">
        <filllayout type="VERTICAL">
                <textarea style="BORDER | MULTI | V_SCROLL | H_SCROLL">
                        <bsh setas="text">
                                String getProperty(){
                                        java.util.Properties p = System.getProperties();
                                        java.util.Enumeration e = System.getProperties().propertyNames();
                                        StringBuilder sb = new StringBuilder();
                                        while(e.hasMoreElements()){
                                                String str = e.nextElement().toString();
                                                sb.append(str);
                                                sb.append(" : ");
                                                sb.append(p.getProperty(str));
                                                sb.append("\n");
                                        }
                                        return sb.toString();
                                }
                                return getProperty();
                        </bsh>
                </textarea>
        </filllayout>
</shell>

2.1.4. GlobalHook.bsh

SWT ³»ºÎ Ŭ·¡½º¸¦ ÀÌ¿ëÇÑ À©µµ¿ì ¸Þ½ÃÁö ÈÅ ¿¹Á¦ÀÔ´Ï´Ù. W2K À̻󿡼­ µ¿ÀÛÇϸç, ½ÇÇàÇϸé À©µµ»ó¿¡¼­ÀÇ ¸ðµç Å°º¸µå ÀÔ·ÂÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

import org.eclipse.swt.internal.Callback;
import org.eclipse.swt.internal.win32.OS;
import org.eclipse.swt.internal.win32.MSG;

class GlobalHook {
        static Shell s = new Shell(Display.getCurrent());
        static Text t = new Text(s, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
        static int hHook = 0;
        
        Shell show(){
                s.setText("GlobalHook");
                s.setLayout(new FillLayout());
                s.setSize(500, 500);
                startHook();
                return s;
        }

        static int getMsgProc(int code, int wParam, int lParam) {
                MSG msg = new MSG();
                OS.MoveMemory(msg, lParam, MSG.sizeof);
                t.append(msg.message + "\n");
                
                return OS.CallNextHookEx(hHook, code, wParam, lParam);
        }
        
        void startHook(){
                Callback callback = new Callback(GlobalHook.class, "getMsgProc", 3);
                int address = callback.getAddress();
                int threadId = OS.GetCurrentThreadId();
                hHook = OS.SetWindowsHookEx(13, address, OS.GetLibraryHandle(), 0);
                if (hHook == 0) {
                        callback.dispose();
                        return;
                }
        }
}

new GlobalHook().show();

2.1.5. KLDP_Reader.bsh

[http]informa¸¦ »ç¿ëÇÑ °£´ÜÇÑ RssReader ¿¹Á¦. JRE»ó¿¡¼­ ±¸µ¿µÇ´Â Zeta/Pure¿¡¼­´Â ´ÙÀ½°ú °°ÀÌ ¿ÜºÎ ÆÐÅ°Áö¸¦ ºÒ·¯¿Ã ¼ö ÀÖ½À´Ï´Ù.
addClassPath("demo/informa_0.6.5.jar");
addClassPath("demo/commons-logging.jar");
addClassPath("demo/jdom.jar");

import de.nava.informa.core.ChannelIF;
import de.nava.informa.core.ItemIF;
import de.nava.informa.impl.basic.ChannelBuilder;
import de.nava.informa.parsers.FeedParser;

Shell s = new Shell(Display.getCurrent(), SWT.SHELL_TRIM | SWT.TOOL);
s.setText("KLDP Reader");
s.setLayout(new FillLayout(SWT.VERTICAL));

ChannelIF channel = FeedParser.parse(
        new ChannelBuilder(), new URL("http://kldp.org/node/feed"));
Iterator i = channel.getItems().iterator();

Button btn;
while(i.hasNext()){
        ItemIF item = (ItemIF)i.next();
        btn = new Button(s, SWT.PUSH);
        btn.setText(item.getTitle());
        btn.addListener(SWT.Selection, new Listener(){
                URL url = item.getLink();
                public void handleEvent(Event event) {
                        Program.launch(url.toString());
                }
        });
}

s.pack();
s.open();

3. ½ºÅ©¸°¼¦

  • Zeta 0.2¿Í ½ÃÇèÁßÀÎ ¸î°¡Áö ¸ðµâµé
ZetaScreenshot2.PNG
[PNG image (146.2 KB)]

  • Zeta 0.1¿¡ demo/HelloWorld 1, 2, 3, 4¸¦ ¶ç¿î ¸ð½À
ZetaScreenshot.PNG
[PNG image (67.41 KB)]

ID
Password
Join
You display the wonderful traits of charm and courtesy.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-09-10 03:17:41
Processing time 0.0024 sec