Petr Chmelař UIFS FIT VUT JAVA pro PDB Kafe? Jako C++ Zrníčka 1 / 12 Java rychlokvaška pro PDB [ ]
Petr Chmelař UIFS FIT VUT JAVA pro PDB Kafe? Jako C++ Zrníčka 2 / 12 Kafe? Java [en] = Kafe [cz] (hovor.) Jazyk… Překládá se na bytecode, který je interpretován JVM - kompilátor není JIT (obvykle) Java API knihovny [ ]
3 Jazyk Java OO, jako C++ (ale hezčí). V Javě neexistuje přímý a nekontrolovaný přístup do paměti (referenční proměnné, kontrola při indexaci polí) Java neobsahuje preprocesor, není povoleno přetěžování operátorů, jednotný zápis pro přístup k objektům i knihovnám Statická typová kontrola (norma IEEE). Stejný výsledek v různých OS, používá Unicode Použití vyjímek, bez vyjímky! Prostředky pro paralelní běh částí programu (multithreading) Dynamické a distribuované aplikace – update za běhu aplikace Bezpečnost aplikací …
4 Konvence Zarovnání kódu (tab)! Třídy, rozhraní a konstruktory - identifikátor začíná vždy velkým písmenem String, StringBuffer Metody a proměnné - identifikátor se skládá z malých písmen reader, getSize() Balíky (packages) - identifikátor se skládá jen z malých písmen, ve složených jménech je oddělovačem tečka java.io Konstanty - identifikátor z velkých písmen. MAX_VALUE
5 Javadoc /** * Returns an Image object that can then be painted on the screen. * The url argument must specify an absolute URL}. * * This method * url an absolute URL giving the base location of the image the image at the specified URL Image */ public Image getImage(URL url) { try { … } catch (MalformedURLException e) { return null; } Komentuje se: Class, function(), package.html, overview.html
Petr Chmelař UIFS FIT VUT JAVA pro PDB Kafe? Jako C++ Zrníčka 6 / 12 Jako C++ OO Objekt jako instance třídy… Syntaxe jako C++
7 Jazyk… Jako C++ (ale hezčí) Operátory jako C++ (ale pouze rozšiřující auto přetypování) Programové struktury jako C++ if, switch, for, do, while, break, continue, return try, catch, finally, throw synchronized Datové typy = třídy (Integer, String, InputStream, Image…) mimo: byte, short, int, long, char (Unicode), float, double, boolean Pole: int[][][] pole = new int[10][5][]; Referenční typ objekt: … (new, null, this, super) (mimo interface, implements, abstract, final) >>>
8 Program.java package client; import java.io.*; /** Třída… */ public class Program { // extends Applikace protected static int pocetProgramku; /** Constructor... */ public Program() { // super()... } // neexistuje destruktor! … protected void finalize() throws Throwable /** main()... */ public static void main(String[] args) { Program prvni = new Program(); if (args.length != 0) { for (int i = 0; i < args.length; i++) System.out.println("Parametr[" + i + "] = " + args[i]); } else { System.out.println("Nebyly zadány žádné parametry."); }
Petr Chmelař UIFS FIT VUT JAVA pro PDB Kafe? Jako C++ Zrníčka 9 / 12 Zrníčka
10 Odkazy Tutoriál [cz] Thinkink in Java (Bruce Eckel) Eckel Java by Sun (java.*, javax.*, org.*) Oracle Client a JDeveloper (oracle.*) Stránky PDB a
11 JDBC Connection set CLASSPATH=%ORACLE_HOME%\jdbc\lib\ojdbc14.jar; %ORACLE_HOME%\sqlj\lib\runtime12.jar; import java.sql.Connection; import java.sql.SQLException; import java.sql.DriverManager; import java.sql.Statement; import java.sql.PreparedStatement; import java.sql.ResultSet; import oracle.jdbc.OracleResultSet; import oracle.jdbc.OraclePreparedStatement; // register the oracle jdbc driver with the JDBC driver manager DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); // connect pcuifs1.fit.vutbr.cz Connection conn = DriverManager.getConnection("jdbc:oracle:thin:login/password" + ); // note: set the autocommit to false for BLOBs (2-phase select-commit). conn.setAutoCommit(false); // create a JDBC Statement object to execute SQL in the database Statement stmt = conn.createStatement();
12 … JDBC // retrieve the next value in the sequence order String SQLquery = "SELECT my_sequence.nextval FROM dual"; OracleResultSet rset = (OracleResultSet)stmt.executeQuery(SQLquery); rset.next(); int nextval = rset.getInt("nextval"); // retrieve the next value in the sequence order String updateSQL = "UPDATE image_table SET name=?, width=? where id=" + nextval; OraclePreparedStatement opstmt = (OraclePreparedStatement)conn.prepareStatement(updateSQL); opstmt.setString(1, imageName); opstmt.setInt(2, imageWidth); opstmt.execute(); opstmt.close(); // commit all our changes conn.commit();
Petr Chmelař UIFS FIT VUT JAVA pro PDB Kafe? Jako C++ Zrníčka 13 / 12 Díky Otázky?