Java – techniki programowania

Transkrypt

Java – techniki programowania
Java – techniki programowania
Wykład dla studentów Informatyki Stosowanej i Fizyki
Komputerowej
UJ
2005/2006
Michał Cieśla
pok. 440a, email: [email protected]
konsultacje: poniedziałki 13-15
http://users.uj.edu.pl/~ciesla/
1
Plan wykładu
1. Rozpowszechnianie programów napisanych w Javie.
2. Narzędzie przydatne w trakcie tworzenia aplikacji (ant, junit, log4j).
3. Java i bazy danych.
4. Bibliotekiprzydatne przy tworzeniu aplikacji komercyjnych.
5. Serializacja i Java Beans.
6. Wybrane elementy wprowadzone w wersji JDK 1.5.
.
2
Literatura
1. http://java.sun.com/.
2. http://www.apache.org/, http://jakarta.apache.org/.
3. Czasopisma:
●
Software Developer Journal (http://www.sdjournal.org/),
●
Java Developers Journal (http://jdj.sys-con.com/).
4. Inne zasoby internetowe (http://www.jguru.com/).
3
Rozpowszechnianie programów w Javie
1. Format jar
- podpisywanie archiwów
- narzędzia keytool i jarsigner
2. Applety
- uruchamianie dowolnej aplikacji jako applet.
3. Java Web Start
- protokół jnlp
4. Tworzenie wersji instalacyjnych
- IzPack
- IzPack-launcher
4
JAR (The Java Archive Format)
Format JAR pozwala umieścić wiele plików w pojedynczym archiwum. Zwykle
archiwa JAR zawierają pliki klas wraz z dodatkowymi zasobami potrzebnymi
do działania apletu czy aplikacji. Podstawowe zalety dystrybucji programów w
postaci plików jar to:
●
bezpieczeństwo: archiwa mogą być cyfrowo podpisywane – użytkownicy
akceptujący podpis mogą dać aplikacji dodatkowe prawa, które w innym
przypadku nie zostałyby udostępnione,
●
kompresja: skrócenie czasu ładowania apletu lub aplikacji,
●
zarządzanie zawartością archiwów z poziomu języka programowania,
●
zarządzanie wersjami na poziomie pakietów oraz archiwów (Package Sealing,
Package Versioning),
●
przenośność.
5
Tworzenie pliku JAR
Archiwum jar tworzy sie używając komendy jar, np:
jar cf archiwum.jar klasa1.class klasa2.class ...
Użyte opcje:
●
c – tworzenie pliku (create),
●
f – zawartość archiwum zostanie zapisana do pliku archiwum.jar zamiast do
standardowego wyjscia (stdout);
Inne opcje, które mogłyby zostac dodane do cf:
●
v – informacje o postępie prac (verbose),
●
0 (zero) – brak kompresji,
●
M – domyślny plik manifest nie zostanie dołączony do archiwum
●
m – do archiwum zostanie dołączony plik manifest z określonej lokalizacji,
np: jar cmf plik_manifest archiwum.jar *,
●
-C – zmiana katologu w trakcie działania archiwizatora, np: jar cf
ImageAudio.jar -C images * -C audio *.
6
Plik MANIFEST
W archiwum jar zwykle znajduje się katalog META-INF a w nim plik
MANIFEST.MF zawierający dodatkowe informacje o archiwum.
Typowa zawartość:
Manifest-Version: 1.0
Created-By: 1.5.0-b64 (Sun Microsystems Inc.)
Ant-Version: Apache Ant 1.6.5
Main-Class: pl.edu.uj.if.wyklady.java.Wyklad01
mówi, że po uruchomieniu archiwum wykonana zostanie metoda
main(String[] args) zawarta w klasie Wyklad01 znajdującej się w
pakiecie pl.edu.uj.if.wyklady.java.
Uruchomienie pliku jar:
java -jar archiwum.jar
7
Przeglądanie zawartości pliku JAR
Archiwum jar przegląda się używając opcji t, np:
jar tf archiwum.jar
Użyte opcje:
t – przeglądanie pliku (table).
Przykład:
jar tf dt.jar
META-INF/
META-INF/MANIFEST.MF
javax/
javax/swing/
javax/swing/AbstractButtonBeanInfo.class
javax/swing/beaninfo/
javax/swing/beaninfo/images/
javax/swing/beaninfo/images/AbstractButtonColor16.gif
javax/swing/beaninfo/images/BorderColor16.gif
javax/swing/beaninfo/images/BoxColor16.gif
...
8
Rozpakowanie pliku JAR
Archiwum jar można rozpakować za pomocą opcji x, np:
jar xf archiwum.jar [plik(i) do rozpakowania]
Użyte opcje:
●
x – tworzenie pliku (create).
Przykład:
jar xf dt.jar – rozpakuje całe archiwum.
jar xf dt.jar javax/swing/AbstractButtonBeanInfo.class –
rozpakuje plik javax/swing/AbstractButtonBeanInfo.class.
UWAGA:
podczas rozpakowywania wszystkie istniejące pliki o ścieżkach takich jak pliki
rozpakowywane zostaną nadpisane.
9
Aktualizacja pliku JAR
Sposoby modyfikacji pliku jar:
jar cmf dodatek-do-manifestu archiwum.jar [plik(i) do
spakowania]
jar uf archiwum.jar [plik(i) do aktualizacji]
Użyte opcje:
●
m – dopisanie informacji do pliku manifest,
●
u – aktualizacja archiwum.
Opcje u i m – mogą być użyte równocześnie. Przykład:
jar xf dt.jar – rozpakuje całe archiwum.
jar umf info dt.jar javax/swing/AbstractButtonBeanInfo.class
– aktualizuje w pliku dt.jar manifest zawartością info i plik
javax/swing/AbstractButtonBeanInfo.class.
10
Podpisywanie pliku JAR
Cyfrowy podpis to ciąg bitów wyliczony na podstawie podpisywanych danych i
prywatnego klucza osoby (instytucji) podpisującej. Podstawowe cechy podpisu
cyfrowego:
●
jego autentyczność jest weryfikowana za pomocą klucza publicznego
podpisującego,
●
nie może zostać podrobiony (dopóki klucz prywatny jest chroniony),
●
nie może być wykorzystany do podpisu innych danych, ponieważ jest funkcją
podpisywanej treści,
●
podpisana treść nie może być zmieniona, w przeciwnym wypadku podpis straci
autentyczność.
Aby wygenerować podpis należy posiadać parę odpowiadających sobie kluczy:
prywatny i publiczny. Dodatkowo potrzebny jest certyfikat potwierdzający
autentyczność klucza publicznego.
11
Narzędzie keytool
keytool służy do zarządzania kluczmi i certyfikatami. Wszystkie klucze są
przechowywane w tzw. keystore. Na dysku jest on przechowywany w
domyślnym katalogu użytkownika w pliku o nazwie .keystore lub
keystore. Aby wygenerować nowy klucz należy użyć opcji genkey:
keytool -genkey {-alias alias} {-keyalg keyalg} {-keysize
keysize} {-sigalg sigalg} [-dname dname] [-keypass
keypass] {-validity valDays} {-storetype storetype}
{-keystore keystore} [-storepass storepass] [-provider
provider_class_name] {-v} {-Jjavaoption}
Więcej informacji:
http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/keytool.html
12
Narzędzie keytool
C:\jdk1.5.0\bin>keytool -genkey -alias mckey
Enter keystore password: haslo0
What is your first and last name?
[Unknown]: Michal
What is the name of your organizational unit?
[Unknown]: Ciesla
What is the name of your organization?
[Unknown]: IIS UJ
What is the name of your City or Locality?
[Unknown]: Krakow
What is the name of your State or Province?
[Unknown]: Malopolska
What is the two-letter country code for this unit?
[Unknown]: PL
Is CN=Michal, OU=Ciesla, O=IIS UJ, L=Krakow, ST=Malopolska,
C=PL correct?
[no]: yes
Enter key password for <mckey>
(RETURN if same as keystore password):
haslomckey
13
Narzędzie jarsigner
jarsigner jest wykorzystywany do podpisywania plików jar.
Aby podpisać plik przyklad.jar za pomocą wygenerowanego wcześniej
klucza mckey używamy polecenia:
C:\jdk1.5.0\bin>jarsigner przyklad.jar mckey
Enter Passphrase for keystore: haslo0
Enter key password for mckey: haslomckey
Warning: The signer certificate will expire within six
months.
Więcej informacji:
http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/jarsigner.html
14
Applety
Applet pozwala na uruchomienie dowolnego programu w javie za pośrednictwem
przeglądarki internetowej. Po wejściu na odpowiednio przygotowaną stronę
internetową następuje pobranie wskazanych plików potrzebnych do
uruchomienia programu. Pliki potrzebne do uruchomienia programu są
automatycznie pobierane po czym następuje uruchomienie wskazanej klasy na
lokalnym komputerze. Aplet nie musi wykonywać się w oknie przeglądarki.
Jak każdy program w javie moze on otworzyć osobne okienko (okienka) do
komunikacji z klientem. Przed uruchomieniem apletu może nastąpić
sprawdzenie podpisów cyfrowych.
15
Przykładowy applet
package pl.edu.uj.is.java
public class ExampleApplet extends javax.swing.JApplet {
/** Konstruktor. Tworzy instancje apletu */
public ExampleApplet() {
getRootPane().putClientProperty(
"defeatSystemEventQueueCheck",
Boolean.TRUE);
}
/**
* Metoda wykonywana po uruchomieniu appletu
* @see java.applet.Applet#init()
*/
public void init() {
ExampleClass.main(null);
}
}
16
Przykładowa strona www
<html>
<head>
<title>Strona zawierająca applet</title>
</head>
<body>
<APPLET CODE ="pl.edu.uj.if.ExampleApplet.class"
WIDTH ="300" HEIGHT ="30">
<PARAM NAME ="ARCHIVE"
VALUE ="kat/archiwum1.jar, kat2/lib/biblioteka.jar">
alt="Twoja przegladarka obsluguje applety,
jednak z nieznanych przyczyn nie potrafi ich
uruchomic.">
Twoja przegladarka ignoruje applety !
</APPLET>
</body>
</html>
17
Przykładowa strona www – Internet Explorer
<html>
<head>
<title>Strona zawierająca applet</title>
</head>
<body>
<OBJECT
classid = "clsid:CAFEEFAC-0014-0001-0000-ABCDEFFEDCBA"
codebase =
"http://java.sun.com/products/plugin/autodl/jinstall-1_4_1windows-i586.cab#Version=1,4,1,0" WIDTH = 300 HEIGHT = 60>
<PARAM NAME ="CODE"
VALUE ="pl.edu.uj.if.ExampleApplet.class" >
<PARAM NAME = "type" VALUE = "application/x-javaapplet;version=1.4.1">
<PARAM NAME = "ARCHIVE" VALUE = "kat/archiwum1.jar,
kat2/lib/biblioteka.jar">
18
Przykładowa strona www – Internet Explorer
<COMMENT>
<EMBED
type = "application/x-java-applet;version=1.4.1"
CODE = "pl.edu.uj.if.ExampleApplet.class"
WIDTH = 300
HEIGHT = 30
pluginspage =
"http://java.sun.com/products/plugin/index.html#download">
<NOEMBED>
alt="Twoja przegladarka obsluguje applety, jednak
z nieznanych przyczyn nie potrafi ich uruchomic."
Twoja przegladarka ignoruje applety !
</NOEMBED>
</EMBED>
</COMMENT>
</OBJECT>
</html>
19
Java Web Start
Technologia Java Web Start jest rozwiązaniem dedykowanym do lokalnego
uruchamiania programów w Javie umieszczonych w sieci.
JWS:
●
jest w pełni niezależna od używanych przeglądarek internetowych,
●
umożliwia automatyczne pobranie właściwej wersji środowiska JRE,
●
pobierane są tylko pliki, które zostały zmienione,
●
obsługuje prawa dostępu do zasobów lokalnego komputera (dysk, sieć, itp.),
●
do opisu zadania do uruchomienia wykorzystuje pliki jnlp (Java Network
Launch Protocol).
Więcej informacji:
http://java.sun.com/products/javawebstart/index.jsp
20
JNLP - przykład
<?xml version="1.0" encoding="utf-8"?>
<jnlp
spec="1.0+"
codebase="http://www.serwer.w.sieci.pl/katalog"
href="plik_jws.jnlp">
<information>
<title>Nazwa programu</title>
<vendor>Producent programu</vendor>
<homepage href="http://www.strona.programu.pl"/>
<description kind="short">Krotki opis
programu</description>
<icon kind="splash" href="kat/splashscreen.gif"/>
<icon href="kat/ikona.gif"/>
<offline-allowed/>
</information>
21
JNLP - przykład
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.4+"/>
<jar href="kat/archiwum1.jar"/>
<jar href=" kat2/lib/biblioteka.jar"/>
</resources>
<application-desc mainclass="pl.edu.uj.if.ExampleApplet"/>
</jnlp>
Więcej:
http://java.sun.com/j2se/1.4.2/docs/guide/jws/downloadservletguide.html
http://java.sun.com/j2se/1.4.2/docs/guide/jws/developersguide/overview.html#requirem
Plik jnlp umieszczamy na serwerze www. Często należy skonfigurować
odpowiadający mu typ mime: application/x-java-jnlp-file JNLP
22
IzPack
Projekt IzPack (http://www.izforge.com/izpack/) służy do tworzenia instalatorów
dla programów w Javie. Jego podstawowe cechy:
●
opensource udostępniony na licencji GNU GPL,
●
powszechnie używany,
●
obsługuje wiele wersji językowych (w tym polską),
●
wieloplatformowy (testowany w Win32, MacOS X, Linux/i386, FreeBSD/i386),
●
konfigurowany poprzez dokument XML,
●
tworzy programy odinstalowujące.
23
IzPack - schemat
pliki
zasoby
Instalator jest opisany za pomocą
dokumentu XML. Dokument ten opisuje
wszelkie zasoby z których korzysta
program. Wynikiem jego kompilacji jest
Dokument XML
archiwum jar zawierające instalator. Do
uruchomienia instalatora wymagane jest
środowisko JRE.
kompilator
instalator
24
IzPack – dokument XML
Dokument XML opisujący program instalacyjny ma następującą strukture:
Program.xml
<installation version="1.0">
<info>
...
</info>
<guiprefs ...>
...
</guiprefs>
<locale>
...
</locale>
<resources>
...
</resources>
<panels>
...
</panels>
<packs>
...
</packs>
</installation>
25
IzPack – dokument XML
Sekcja info zawiera podstawowe informacje o programie, takie jak nazwa wersja,
autorzy, itp:
<info>
<appname>MyApp</appname>
<appversion>1.2.3</appversion>
<authors>
<author name="Snoopy" email="[email protected]" />
<author name="Foo Bar" email="[email protected]" />
</authors>
<url>http://www.myapp.org/</url>
<javaversion>1.4</javaversion>
</info>
Sekcja guiprefs określa natomiast wygląd instalatora:
<guiprefs height="600" resizable="yes" width="800">
<laf name="metouia">
<os family="unix" />
</laf>
</guiprefs>
26
IzPack – dokument XML
Sekcja locale definiuje dostępne wersje językowe instalatora:
<locale>
<langpack
<langpack
<langpack
<langpack
<langpack
<langpack
</locale>
iso3="eng"/>
iso3="fra"/>
iso3="deu"/>
iso3="ita"/>
iso3="jpn"/>
iso3="spa"/>
Sekcja resources pozwala wskazać zasoby wykorzystywane do tworzenia
okienek instalatora:
<resources>
<res src="install-readme.html" id="HTMLInfoPanel.info"/>
<res src="Licence.txt" id="LicencePanel.licence"/>
<res src="langsel.jpg" id="installer.langsel.img"/>
</resources>
27
IzPack – dokument XML
Instalator bedzie zawierał okienka określone w sekcji panels.
<panels>
<panel
<panel
<panel
<panel
<panel
<panel
<panel
</panels>
classname="HelloPanel"/>
classname="HTMLInfoPanel"/>
classname="LicencePanel"/>
classname="PacksPanel"/>
classname="TargetPanel"/>
classname="InstallPanel"/>
classname="SimpleFinishPanel"/>
Sekcja packs określa położenie komponentów programu
<packs>
<pack name="Core" required="yes">
<description>MyApp core files.</description>
<fileset dir="" targetdir="$INSTALL_PATH">
<include name="*.txt" />
<include name="lib/**/*" />
</fileset>
</pack>
</packs>
28
IzPack – kompilacja
Aby stworzyć wersje instalacyjną można użyc skryptu compile np:
compile install.xml -b . -o install.jar -k standard
użyte opcje:
-b podstawowa ścieżka tzw. basepath,
-o nazwa pliku wynikowego,
-k typ instalatora,
Uruchomienie instalatora nastąpi po wydaniu polecenia:
java -jar install.jar
Aby uruchomić program nie posiadając środowiska JRE można zastosować
dodatkowo inny program np: izpack-launcher.
29
Podsumowanie
Aplikacje w javie można dostarczyć odbiorcy na kilka sposobów. Istnieje
możliwość przygotowania klasycznej wersji instalacyjnej jak również
uruchomienia programu umieszczonego w sieci internet. U podstaw wszystkich
tych rozwiązań znajduje się format archiwów javy - jar.
30

Podobne dokumenty