Classpath. Class loading + resurser. Class loader. jar-filer

Relevanta dokument
Designmönster/Design patterns. Design patterns. Klassifikation av design patterns. Design patterns. Varför använda Design patterns?

Klientprogrammering mot databaser

Sample exam questions. Database exam TIG058

Innehåll. Föreläsning 3. javax.naming.context. javax.sql.datasource. Vad är JDBC? Java Naming and Directory Interface(JNDI) Viktigaste metoder:

Genomgång av tentamen. Databasteknik ITHS 4/3 2016

Lösningsförslag, tentamen i Databaser

INTRODUKTION TILL JDBC

2I1070 Lektion 2 Servlets och databaskopplingar Internetprogrammering 2I1049 Treskiktsarkitektur Klient-server med servlets

Att använda Java SE JDK 6

Innehåll MySQL Intro. Historik / Utveckling Produkter Primära delsystem Installation Tabell och datatyper Namnsättning

Laboration 10 - Eclipse

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Databaser. Jan Erik Moström, Department of Computing Science, Umeå University - jem@cs.umu.se

Reguljära uttryck. Reguljära uttryck. Nu kommer en siffra78 och en till SIFFRA(78) men utan 7kstuga SIFFRA(89)

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Laboration 10 - NetBeans

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

Nya webbservern Dvwebb.mah.se

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Att använda Java SE JDK 6

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Funktionsbeskrivning

F4. programmeringsteknik och Matlab

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Trafla databasen vi hämtar data från (remote export) ligger på en godtycklig maskin i nätverket. Den här databasen är en MIMER databas.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Vyer, Prepared Statements, Triggers

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

FÖ 07 - JDBC Åtkomst till databaser från applikationer med Java - exempelkod -

Laboration 24 Databasen MySQL och java

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Tentamen OOP

Att skriva till och läsa från terminalfönstret

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Micael Karlsson

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Högskolan Dalarna sid 1 av 5 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Laboration 5 - Biblioteksapplikation

Övningar i SQL. SQLAccess.doc Ove Lundgren

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

WCMS-15, Webbutvecklare CMS

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Databaser och Datamodellering Foreläsning IV

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Databasutveckling Tabeller. tinyint 1 byte (0-255) Upp till 8 bytes

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Databasutveckling Microsoft T-SQL - Fortsättning. Funktioner GROUP BY HAVING Skapa databaser Skapa tabeller Lite om transaktioshantering

1. SQL DML (Data Manipulation Language) 2. Lägga till data. 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7.

Kompilering av Java-program med eclipse SDK för den som kan BlueJ

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

Starta MySQL Query Browser

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

VAD GÖR DU / VEM ÄR DU?

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

PHP-presentation Dataföreningens Open Source-nätverk

Sätta upp e-post server Ubuntu 14.04, del 1 installation av programvara, konfiguration av mysql och Postfix

Filbeskrivningar Eller på särskild CD skiva

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

MySQL. Maths Göthe. 25 februari Inledning Några konventioner Licens... 2

TENTAMEN OOP

Language Integrated Query, LINQ, och databaser

Databasutveckling Introduktion till SQL och TSQL

VAD GÖR DU / VEM ÄR DU?

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.

TENTAMEN DATABASKUNSKAP ITEK12

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

SMD 134 Objektorienterad programmering

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

Databaser - Design och programmering

Tabeller och kolumner SQL. Lägga till en ny post. Lägga till en ny post

Stored procedure i ASP.NET

Tentamen , Introduktion till Java, dtaa98, dtea53

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för:

SEB. Four foils. SEB IT Lars-Göran Karlsson

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

1 jar-filer. 1.1 Översikt. 1.2 jar-filers struktur. 1.3 jar manifest

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 1

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Transkript:

Classpath Sätts antingen via kommandoradsparameter till jvm:en (-cp -classpath) eller via en environment variabel (CLASSPATH). Går även att ställa in i eclipse för ett projekt. Class loading + resurser Innehåller kolonseparerade sökvägar till kataloger, jar-filer och zip-filer Katalognamn ska vara de kataloger som innehåller roten i en paketstruktur ex: java -cp ~/prog/myjar.jar:~/prog/lib/ Går även att ställa in i manifestfilen för jar-filer Class loader Ansvarig för att lösa in klassfilerna då de behövs I normalfallet laddas alla programmets klasser in då de behövs av system class loadern. Denna letar efter klasserna på de ställen som anges av programmets CLASSPATH Möjligt att skriva egna som laddar in klasserna från andra källor/på andra sätt jar-filer Kan användas för att packa ihop klassfiler som hör ihop (tex en applikation) till en fil Kan komprimeras och signeras Java program kan köras från jar-filer - Från kommandoraden java -jar minfil.jar - På endel plattformar exekveras de om man dubbelklickar på dem (program med grafiska användargränssnitt) Innehåller vanligtvis förutom själva klassfilerna också filer som beskriver innehållet (Manifest) Eclipse kan generera en jar-fil från ett projekt (se menyn File -> Export)

Manifest filer Metadatafil som kan finnas i jar-filer Ska heta MANIFEST.MF och finnas i katalogen META-INF i jar-filen I jar-filen kan anges: Huvudklass Main-Class: org.mypackage.helloworld Andra bibliotek som behövs: Class-Path: lib/supportlib.jar acme/ beans.jar Sökvägar anges relativt ursprungsjarfilen. De separeras med mellanslag... Resurser ur jarfiler Då program finns i JAR-filer kan vi inte längre bara ange sökvägar till filen för att komma åt den. Vi måste först ta fram en url till den fil vi vill använda URL url = getclass.getresource(filename); Sedan kan vi läsa in resursen via någon av de metoder/ konstruktorer som tar url:er som parametrar Image image = Toolkit.getDefaultToolkit(). getimage(url); Detta funkar även i fallet då vi inte paketerat ihop vårt program i en jarfil Bilder Bilder och animeringar i Java Bilder hanteras av ett antal olika klasser i java Icon Statiska bilder i en komponent BufferedImage Kan användas för att rita bilder i bakgrunden (ärver från Image) VolatileImage Annan variant på Image. Kan tappa sitt innehåll när som helst. Kan pga hårdvaruacceleration på vissa plattformar vara mkt snabbare än andra lösningar Lite bökig att använda (eg behöver ni den inte så kan ni skippa den i projektet)

Ladda in bilder För att göra detta kan tex ImageIO klassen användas File f = new File("c:\images\myimage.gif"); BufferedImage bi = ImageIO.read(f); Fixar bildformat som tex gif (även animerade), jpeg och png En BufferedImage kan sedan ritas ut mha Graphics.drawImage() Dubbelbuffring Teknik för att undvika flimmer och grafikproblem vid animeringar Bygger på att man ritar upp sin bild i bakgrunden och sedan ritar ut den färdigritade bilden (eller delar av den) på skärmen Swing har inbyggt stöd för dubbelbuffring som kan slås av/på Vissa plattformar har dessutom dubbelbuffring som ligger på en nivå utanför java Databaser - kortfattat Förenklad beskrivning - om ni vill veta mer bör ni gå den ordinarie databaskursen Databaser, SQL och JDBC Vilken ide finns bakom databaser Lagra information i en strikt struktur Fritext sökning Göra det möjligt att snabbt hämta information

Representera information Lena Andersson Kurt Olssons Väg 12 123 45 Långtbortistan 090 123 45 67 Lena Andersson Kurt Olssons Väg 12 123 45 Långtbortistan Lena Andersson Kurt Olssons Väg 12 123 45 Långtbortistan 090 123 45 67 Men matchar allting detta? 090 123 45 67 Lena Andersson Kurt Olssons Väg 12 123 45 Långtbortistan 090 123 45 67 Kalle Svensson Karlsson Box 21 234 56 Tomby Svea Grahn Västgötagatan 45, 3tr 345 78 Gamby Clark Kent 21th Super Street Hero City 123-2389 Lena Andersson Kurt Olssons Väg 12 123 45 Långtbortistan 090 123 45 67 Erik Karlsson Videvägen 18 987 65 Långtbortistan 090 890 123 Mia Grahn Videvägen 1289 876 54 Långtbortistan 090 222 22 22 Fia Talltopp Storgatan 1 129 21 Långbortistan 090 123 4857 Förnamn Efternamn Jobbar Telefon Förnamn Efternamn Jobbar Telefon Förnamn Efternamn Jobbar Telefon Förnamn Efternamn Jobbar Telefon Företag Efternamn Jobbar Telefon Företag Efternamn Jobbar Telefon

1 XX XX XX 1 XX XX XX 1 XX XX XX 1 1 2 2 2 4 2 1 1 XX 3 XX 2 XX 2 XX 3 XX 2 XX 4 XX 4 XX 3 1 3 4 1 XX XX XX Hur gör man rent praktiskt?? Olika implementationer, t.ex: 1 XX XX XX 1 1 2 2 2 4 2 1 3 3 1 4 1 XX XX XX MySQL Postgresql Oracle SQLite SQLServer...

Inte sann men ger en översikt Förenklad bild av hur det fungerar SQL Standard Query Language app Select SELECT XXX FROM YYY WHERE ZZZ JDBC app app Insert INSERT INTO XXX VALUES YYY SQL tolk Databashanterare API Delete DELETE FROM XXX WHERE YYY Update UPDATE XXX SET YYY WHERE ZZZ Databas JDBC - princip Fyra begrepp Statement MySQL Query Java program JDBC Driver Driver Postgresql ResultSet Transaction Driver Driver Oracle...

Ladda drivrutinen Class.forName( driverpath ) Öppna förbindelse con = DriverManager.getConnection( url, user, password ) Fixa till ett statement ms = con.createstatement() Gör nåt res = ms.executequery( sqlstuff ) nr = ms.executeupdate( sqlstuff ) final private static String driver = "org.postgresql.driver"; final private static String url = "jdbc:postgresql://postgres.cs.umu.se/x"; final private static String user = "X"; final private static String passwd = "X"; public static void main( String argv[] ) throws java.sql.sqlexception { Connection connection; try{ Class.forName( driver ); catch ( java.lang.classnotfoundexception e ) { System.err.println( "Problem - Kunde inte hitta drivrutinen" ); return; Jan Erik Moström try{ connection = DriverManager.getConnection( url, user, passwd ); catch ( java.sql.sqlexception e ) { System.err.println( "Problem - Kunde inte ansluta till databasen" ); return; ResultSet result = statement.executequery( "select last, first from names" ); System.out.println( "\n\ntest 1" ); Statement statement = connection.createstatement( ); statement.execute( "create table names (first char(20), last char(20))" ); statement.execute( "insert into names (first, last) values ('Kalle', 'Anka')" ); statement.execute( "insert into names (first, last) values ('Kajsa', 'Anka')" ); statement.execute( "insert into names (first, last) values ('Knatte', 'Anka')" ); statement.execute( "insert into names (first, last) values ('Fnatte', 'Anka')" ); statement.execute( "insert into names (first, last) values ('Tjatte', 'Anka')" ); statement.execute( "insert into names (first, last) values ('Joakim', 'von Anka')" ); statement.execute( "insert into names (first, last) values ('Kalle', 'Johansson')" ); statement.execute( "insert into names (first, last) values ('Anna', 'Andersson')" ); Test 1 Anka, Kalle Anka, Kajsa Anka, Knatte Anka, Fnatte Anka, Tjatte von Anka, Joakim Johansson, Kalle Andersson, Anna

result = statement.executequery( "select last, first from names order by last, first" ); System.out.println( "\n\ntest 2" ); result = statement.executequery( "select last, first from names where last = 'Anka' order by last, first" ); System.out.println( "\n\ntest 3" ); Test 2 Andersson, Anna Anka, Fnatte Anka, Kajsa Anka, Kalle Anka, Knatte Anka, Tjatte Johansson, Kalle von Anka, Joakim Test 3 Anka, Fnatte Anka, Kajsa Anka, Kalle Anka, Knatte Anka, Tjatte statement.execute( "update names set first = 'Karl' where first = 'Kalle'" ); result = statement.executequery( "select last, first from names order by last, first" ); System.out.println( "\n\ntest 4" ); statement.execute( "delete from names where last = 'Anka'" ); result = statement.executequery( "select last, first from names order by last, first" ); System.out.println( "\n\ntest 5" ); Test 4 Andersson, Anna Anka, Fnatte Anka, Kajsa Anka, Karl Anka, Knatte Anka, Tjatte Johansson, Karl von Anka, Joakim Test 5 Andersson, Anna Johansson, Karl von Anka, Joakim

String first = "Arne"; String last = "Anka"; statement.execute( "insert into names (first, last) values ('" + first + "', '" + last + "')" ); result = statement.executequery( "select last, first from names order by last, first" ); System.out.println( "\n\ntest 6" ); Precompiled statements first = "Arne', 'Anka'); drop table names; insert into funny ( woop, miff) values ('Kalle"; last = "Anka"; PreparedStatement prep = con.preparestatement( "INSERT INTO XXX (a,b,c) VALUES (?,?,?)" ) prep.setxxx( index, value ) statement.execute( "insert into names (first, last) values ('" + first + "', '" + last + "')" ); prep.executeupdate... etc

Datatyper i databaser Olika databaser stödjer olika datatyper postgresql - smallint, integer, bigint, decimal, real, serial, money, varchar, text, timestamp, date, time, byte, boolean, etc. mysql - char, varchar, tinytext, text, blob, longtext, tinyint, int, bigint, date, datetime, timestamp, time, etc. Vad ska man tänka på? Tänk några steg framåt - Förändringar i framtiden - Överdesigna inte Lagra information på ett ställe Ofta bra att ha ett unikt id på (nästan) varje post Gör inte en databashanterare i ditt program!!! - Utnyttja databashanteraren och låt den göra jobbet