Nyolc lap alatt a nyelv körül


  1. Hello világ!
  2. public class HelloVilag {
        public static void main(String[] args) {
            System.out.println("Helló Világ!");
        }
    }
    
    HelloVilag.java

  3. Faktoriális számítása
  4. public class Factorial {
        public static void main(String[] args) {
            int factorial = 1;
            int i = 1;
    
            while(i < 10) {
                factorial = factorial * i;
                System.out.print(i + "!=" + factorial + ", ");
                i = i + 1;
            }
            System.out.println();
        }
    }
    
    Factorial.java

  5. Konstansok
  6. import java.io.*;
    public class Magyarul {
        public static void main(String args[]) {
            try {
                Writer w = new OutputStreamWriter(System.out,"8859_2");
                w.write("tekn\u0150c");
                w.close();
            }
            catch(Exception e) {
                System.out.println("nem megy...");
            }
        }
    }
    
    Magyarul.java

  7. Megbízhatóság
  8. import java.io.*;
    public class Osztas {
        static StreamTokenizer  st = 
            new StreamTokenizer(new InputStreamReader(System.in));
        public static int readNumber(String kerdes) throws IOException {
            while(st.ttype != StreamTokenizer.TT_NUMBER) {
                System.out.print(kerdes);
                st.nextToken();
            }
            return (int)st.nval;
        }
        public static void main(String args[]) {
            try {
                int szam = readNumber("gépeljen be egy számot: ");
                System.out.println("100 / " + szam + " = " + 100/szam);
            }
            catch(IOException e) {
                System.err.println("a szám beolvasása nem sikerült...");
            }
            catch(ArithmeticException e) {
                System.err.println("az osztás nem sikerült...");
            }
        }
    }
    
    Osztas.java

  9. Biztonsági beállítások
  10. public class ShowProperty {
        public static void main(String args[]) {
            for(int i = 0; i < args.length; i++)
                System.out.println(args[i] + ':' + 
    	        System.getProperty(args[i]));
        }
    }
    
    ShowProperty.java
    grant {
        permission java.util.PropertyPermission "book.motto", "read"; 
    };
    
    simple.policy
    java ShowProperty book.motto book.motto:null 
    java -Dbook.motto=donotpanic ShowProperty book.motto book.motto:donotpanic 
    java -Djava.security.manager -Dbook.motto=donotpanic ShowProperty book.motto 
    java -Djava.security.manager -Dbook.motto=donotpanic 
      -Djava.security.policy=simple.policy ShowProperty book.motto 
    
    policy.sh

  11. Viszlát applet
  12. Ha nem működik az APPLET a WWW böngészőben, akkor ez jelenik meg helyette.
    import java.awt.*;
    import java.applet.Applet;
    
    public class Viszlat extends Applet {
        public void paint(Graphics g) {
            g.drawRect(25, 2, 90, 25);
            g.drawString("Viszlát!", 50, 20);
        }
    }
    
    Viszlat.java
    <HTML>
    <HEAD><TITLE>Viszlát applet</TITLE></HEAD>
    <BODY>
    <APPLET CODE="Viszlat.class" WIDTH=200 HEIGHT=50>
    Ha nem működik az APPLET a WWW böngészőben, akkor ez jelenik meg helyette.
    </APPLET>
    </BODY></HTML>
    </PRE>
    viszlat.html
    

  13. AWT
  14. import java.awt.*;
    import java.applet.Applet;
    
    public class Udv extends Applet {
        public void init() {
            setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
            add(new Label("Üdv ismét!", Label.CENTER));
        }
    }
    
    Udv.java

    Udv.html

  15. Grafika
  16. import java.awt.*;
    import java.awt.geom.*;
    
    public class Abra extends Canvas {
        private int            szog = 0;       // forgatási szög
        private GeneralPath    abra = null;    // az ábra leírása
        private RenderingHints minoseg = null; // megjelenítés módja
    
        public Abra() {
            abra = new GeneralPath();          // tetszőleges ábra
            abra.append(new Ellipse2D.Double(5.0, 12.5, 30.0, 15.0), false);
            abra.append(new Ellipse2D.Double(12.5, 5.0, 15.0, 30.0), false);
            minoseg = new RenderingHints(      // "antialiasing" bekapcsolása
                RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
            setSize(40, 40);                   // az elem mérete
        }
        
        public void paint(Graphics g) {
            Graphics2D g2 = (Graphics2D) g;    // ez a típuskényszerítés 
                                               // csak Java2-ben érvényes!
            g2.setRenderingHints(minoseg);
            g2.rotate(Math.PI * szog / 180.0, 20.0, 20.0);
            g2.draw(abra);
        }
    
        public void forgat() {
            szog = (szog + 1) % 360;           // szög növelése
            repaint();
        }
    }
    
    Abra.java
    import java.awt.*;
    import java.applet.Applet;
    
    public class AbraUdv extends Applet {
        public void init() {
            setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
            add(new Abra());
            add(new Label("Üdv ismét!", Label.CENTER));
        }
    }
    
    AbraUdv.java

    AbraUdv.html

  17. Párhuzamosság
  18. public class Forgato extends Thread {
        private Abra             abra;    // amit forgat
        private volatile boolean futhat;  // futhat-e még?
        private volatile boolean latszik; // látszik-e?
    
        public Forgato(Abra azAbra) {
            abra = azAbra;
            futhat = true;
            latszik = false;
        }
    
        public void run() {
            while(futhat) {               // Amíg futhat,
                abra.forgat();            // addig forgatja az ábrát.
                try {
                    if(latszik) {         // Ha látszódik, akkor
                        sleep(100);       // alszik 1/10 másodpercet,
                    } else {              // ha nem, akkor vár...
                        synchronized(this) { wait(); }
                    }
                } catch(InterruptedException e) {}
            }
        }
        synchronized public void eltunik() {
            latszik = false;              // az ábra eltűnik
        }
        synchronized public void elotunik() {
            latszik = true;               // az ábra előtűnik
            notify();                     // és elindul a várakozásból
        }
        synchronized public void vege() { // a forgatás leállítása
            futhat = false;
            if(!latszik) {                // ha várakozott, akkor
                notify();                 // meglökjük, hogy leálljon
            }
        }
    }
    
    Forgato.java
    import java.awt.*;
    import java.applet.Applet;
    
    public class ForgoUdv extends Applet {
        private Forgato forgato = null;
        
        public void init() {
            System.out.println("init");
            setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
            Abra abra = new Abra();           // ábra létrehozása
            forgato = new Forgato(abra);      // forgató szál létrehozása
            forgato.start();                  // és elindítása
            add(abra);                        // ábra beillesztése
            add(new Label("Üdv ismét!", Label.CENTER));
        }
              
        public void start() {         // a forgató szál elindul,
            forgato.elotunik();       // amint az applet megjelenik
        }
        public void stop() {          // a forgató szál vár,
            forgato.eltunik();        // ha az applet nem látszik
        }
        public void destroy() {       // a forgató szál megszűnik,
            forgato.vege();           // ha az applet megáll
        }
    }
    
    ForgoUdv.java

    ForgoUdv.html

  19. Swing
  20. import java.awt.*;
    import javax.swing.*;                     // Swing csomagja
    
    public class JUdv extends JApplet {       // Swing applet = JApplet
        private Forgato forgato = null;
        
        public void init() {
            Container p = getContentPane();   // tartalom máshova kerül!
            p.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
            p.setBackground(Color.white);     // háttérszín fehér lesz
            
            Abra abra = new Abra();           // új ábra létrehozása
            forgato = new Forgato(abra);      // mely forogni is fog
            forgato.start();
            p.add(abra);                      // nem csak "add(abra)"!
            
            JLabel cimke = new JLabel("Üdv ismét!", JLabel.CENTER);
            // segítőszöveg és keret beállítása
            cimke.setToolTipText("köszöntés"); 
            cimke.setBorder(BorderFactory.createLoweredBevelBorder()); 
            p.add(cimke);                     // nem csak "add(cimke)"!
        }
              
        public void start() {         // a forgató szál elindul,
            forgato.elotunik();       // amint az applet megjelenik
        }
        public void stop() {          // a forgató szál vár,
            forgato.eltunik();        // ha az applet nem látszik
        }
        public void destroy() {       // a forgató szál megszűnik,
            forgato.vege();           // ha az applet megáll
        }
    }
    
    JUdv.java

    JUdv.html


GNU környezetben a példák fordítása:
  make
és futtatása:
  make run