Java

Allikas: Kuutõrvaja

Sissejuhatus

Siin palas ei tule juttu mitte Tsehhis toodetud mootorrattast vaid ühest keelest.

  • JRE: Java Runtime Environment. Tegemist on java virtuaalmasinaga kus java programmid töötavad. Ühtlasi sisaldab see browseri pluginat ja appleti käivitamist.
  • JDK: Täielik tarkvara arenduskomplekt javale, sisaldades ühtlasi ka jre-d, kompilaarorit ja töövahendeid (näiteks JavaDoc, Java Debugger) selleks, et luua ja kompileerida programme.

CBNux.png

Java paigaldamine

Esiteks on olemas Oracle JDK ja Open JDK

  • Oracle (varasemalt Sun) JDK, suletud koodiga java, koos kommertsiaalse toega oracle enda asjadele.
  • OpenJDK, avatud koodiga java. Oracle poolt vabaks antud osa koodist.

Java kasutamine

Lähtetekst

$ cat HelloWorld.java
public class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello, World");
  }
}

Kompileerimine, tekib fail HelloWorld.class

$ javac HelloWorld.java

Käivitamine

$ java HelloWorld
Hello, World

Java paketid

$ find . -ls
8212    4 drwxr-xr-x   3 root     root         4096 Apr  8 11:27 .
8214    4 drwxr-xr-x   2 root     root         4096 Apr  8 11:27 ./ee/tartu/loomaaed
8217    4 -rw-r--r--   1 root     root          127 Apr  8 11:24 ./ee/tartu/loomaaed/HelloWorld.java
8219    4 -rw-r--r--   1 root     root          428 Apr  8 11:27 ./ee/tartu/loomaaed/HelloWorld.class

Kompileerimiseks

$ javac ee/tartu/loomaaed/HelloWorld.java 

Käivitamiseks

$ java ee.tartu.loomaaed.HelloWorld
Hello World

Klassid

package ee.tartu.loomaaed;

public class HelloWorld {
  public static void main(String[] args) {
 
    arvutaja arvuti = new arvutaja();
    int summa = arvuti.liitja(4,3);
    int vahe = arvuti.lahutaja(4,3);
    System.out.println(summa);
    System.out.println(vahe);
  }
}

class arvutaja {
  public int liitja(int a, int b) {
    return a + b;
  }

  public int lahutaja(int a, int b) {
    return a - b;
  }
}

kus

  • class arvutaja { ... } - klass, milles on kirjeldatud kaks funktsiooni, ehk õigemini meetodit, liitja ja lahutaja
  • arvutaja arvuti = new arvutaja(); - moodustatakse arvutaja alusel uus objekt nimega arvuti
  • arvuti.liitja(4,3); - kasutatajase objekti arvuti meetodit liitja argumentidega 4 ja 3

Kompileerimine ja kasutamine toimub nagu eelmisel juhul.

Ühendus Oracle andmebaasiga

Nt Oracle andmebaasiga suhtlemiseks on vajalik draiver ojdbc14.jar (v. 10.2) või ojdbc6.jar (v. 11.2)

$ cat HelloOracle.java
import java.sql.*;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.net.*;

public class HelloOracle
    {
        public static void main(String args[]) throws SQLException {
            Connection con = null;
            try {
                Class.forName("oracle.jdbc.driver.OracleDriver");
                con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.13.64:1521:loom", \
                  "mart", "mardiparool");
                Statement st = con.createStatement();
                ResultSet rs = st.executeQuery("select BANNER from SYS.V_$VERSION");
                while(rs.next()) {
                     System.out.println(rs.getString(1));
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if(con != null) {
                    con.close();
                }
            }
        }
    }

kus

  • loom - oracle baasi SID

Kompileerimiseks

$ export CLASSPATH=ojdbc14.jar:.
$ javac HelloOracle.java

ja käivitamiseks

$ java HelloOracle

Kasulikud lisamaterjalid

Ühendus PostgreSQL andmebaasiga

$ cat HelloPostgresql.java
import java.sql.*;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.net.*;

public class HelloPostgresql
     {
         public static void main(String args[]) throws SQLException {
             Connection con = null;
             try {
                 Class.forName("org.postgresql.Driver");
                 con = DriverManager.getConnection("jdbc:postgresql://127.0.0.1/test", "priit", "parool");
                 Statement st = con.createStatement();
                 ResultSet rs = st.executeQuery("SELECT * FROM priit.inimene");
                 while(rs.next()) {
                      System.out.println(rs.getString("nimi"));
                 }
             } catch (Exception e) {
                 e.printStackTrace();
             } finally {
                 if(con != null) {
                     con.close();
                 }
             }
         }
     }

Kompileerimiseks

$ export CLASSPATH=postgresql-8.4-701.jdbc3.jar:.
$ javac HelloPostgresql.java

Käivitamiseks

$ java HelloPostgresql

Ühendus MySQL andmebaasiga

Kopeerida draiver aadressilt http://dev.mysql.com/downloads/connector/j/

$ tar zxf mysql-connector-java-5.1.12.tar.gz

Näiteks selline programm esitab andmebaasi test tabeli inimene tulba nimi väärtused

$ cat HelloMySQL.java
import java.sql.*;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.net.*;

public class HelloMySQL
    {
        public static void main(String args[]) throws SQLException {
            Connection con = null;
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/baasinimi?" + \
                  "user=kasutajanimi& password=parool");
                Statement st = con.createStatement();
                ResultSet rs = st.executeQuery("SELECT * FROM inimene");
                while(rs.next()) {
                     System.out.println(rs.getString("nimi"));
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if(con != null) {
                    con.close();
                }
            }
        }
    }

Kompileerimiseks

$ export CLASSPATH=mysql-connector-java-5.1.12-bin.jar:.
$ javac HelloMySQL.java

Käivitamiseks

$ java HelloMySQL

SMTP

Plaintext

Selleks, et saata läbi postirelee välja kirja sobib kasutada JavaMail API't http://java.sun.com/products/javamail/, mis tuleb kopeerida ja lahti pakkida sobivasse kataloogi, nt /opt/javamail. Praktiliselt on vajalik kasutada sealt arhiivist ainult mail.jar teeki.

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

// Send a simple, single part, text/plain e-mail
public class Kirjasaatja {

  public static void main(String[] args) {

    String to = "mart@loomaaed.tartu.ee";
    String from = "priit@loomaaed.tartu.ee";
    // meilirelee aadress
    String host = "192.168.1.250";

    Properties props = new Properties();
    props.put("mail.smtp.host", host);
    // debugimise sisselülitamine
    props.put("mail.debug", "false");
    Session session = Session.getInstance(props);

    try {
      Message msg = new MimeMessage(session);
      msg.setFrom(new InternetAddress(from));
      InternetAddress[] address = {new InternetAddress(to)};
      msg.setRecipients(Message.RecipientType.TO, address);
      msg.setSubject("Test kiri");
      msg.setSentDate(new Date());
      msg.setText("See on test kiri. " +
                       "Ja kirja sisu\n");
      Transport.send(msg);
    }
    catch (MessagingException mex) {
      mex.printStackTrace();
    }
  }
}

Kompileerimiseks ja kasutamiseks sobib öelda

$ export CLASSPATH=/opt/javamail/mail.jar:.
$ javac Kirjasaatja.java
$ java Kirjasaatja

Märkused

# sysctl -w net.ipv6.bindv6only=0

Kasulikud lisamaterjalid