Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Arhive JAR (Java ARchive)

java


Arhive JAR (Java ARchive)

Definitie

Sunt arhive īn format ZIP folosite pentru compresarea mai multor fisere īn unul singur. Diferenta consta īn faptul ca un fisier JAR contine, pe lānga fiserele arhivate, si un director denumit META-INF, ce contine diverse informatii auxiliare.



Un fisier JAR poate fi creat folosind utilitarul jar sau metode ale pachetului java.util.jar.

Beneficii

  • portabilitate - este singurul format de arhivare independent de platforma
  • compresarea fisierelor est optimizata pentru fisiere de tip class
  • minimizarea timpului de incarcare a unui applet : daca appletul (fisiere class, resurse, etc) este compresat intr-o arhiva jar, el poate fi incarcat intr-o singura tranzactie HTTP, fara a fi deci nevoie de a se deschide o conexiune noua pt. fiecare fisier.
  • securitate - arhivele JAR pot fi "semnate" electronic
  • mecanismul pentru lucrul cu fisiere JAR este parte integrata a platformei Java.

Folosirea utilitarului jar

Arhivatorul jar se gaseste īn subdirectorul bin al directorului īn care este instalat mediul Java. In tabelul de mai jos sunt sumarizate operatiile principale:

Operatie

Comanda

Crearea unei arhive

jar cf nume-arhiva fisier(e)-intrare

Vizualizare continutului unei arhive

jar tf nume-arhiva

Extragerea continutului unei arhive

jar xf nume-arhiva

Extragerea doar a unor fisiere dintr-o arhiva

jar xf nume-arhiva fisier(e)-arhivate

Executarea unei aplicatii īmpachetate īntr-un fisier jar ( JDK 1.1)

jre -cp app.jar ClasaPrincipala

Executarea unei aplicatii īmpachetate īntr-un fisier jar ( JDK 1.2)
Alicatia trebuie compresata in asa fel incat interpretorul sa stie unde se gaseste clasa principala

java -jar app.jar

Deschiderea īntr-un browser a unui applet compresat īntr-un fisier jar

<applet code=NumeClasaApplet.class
archive="NumeArhiva.jar"
width=latime height=īnaltime>
</applet>

Exemple:

  • arhivarea a doua fisiere class: jar cf classes.jar A.class B.class
  • arhivarea tuturor fisierelor din directorul curent: jar cvf allfiles.jar * 717g61h

Executarea aplicatiilor īmpachetate īntr-o arhiva JAR

Pentru a rula o aplicatie īmpachetata īntr-o arhiva JAR trebuie sa facem cunoscuta interpretorului numele clasei principale a aplicatiei. Sa consideram urmatorul exemplu, īn care dorim sa arhivam clasele : GraphEditor.class, Graph.class, Edge.class, Vertex.class , clasa principala fiind GraphEditor. Vom scrie:

jar cvfm editor.jar *.class

In urma acestei comenzi vom obtine arhiva editor.jar. Daca vom īncerca sa lansam īn executie aceasta arhiva prin comanda java -jar editor.jar vom obtine urmatoarea eroare:

"Failed to load Main-Class manifest from editor.jar"

. Aceasta īnseamna ca īn fiserul Manifest.mf ce se gaseste īn directorul META-INF trebuie sa īnregistram clasa principala a aplicatiei. Acest lucru īl vom face īn doi pasi:

  1. se creeaza un fisier cu un nume oarecare (ex: mymanifest ) īn care vom scrie:
    Main-Class : GraphEditor.java
  2. adaugam aceasta completare la fisierul manifest al arhivei editor.jar:
    jar cvfm editor.jar mymanifest

Ambele operatii puteau fi executate īntr-un singur pas:

jar cvfm editor.jar mymanifest *.class

Fisiere JAR executabile

Pe sistemele Win32, platforma Java 2 va asocia extensiile .jar cu interpretorul java, ceea ce īnseamna cs facānd dublu-click pe o arhiva jar va fi lansata īn executie aplicatia īmpachetata īn acea arhiva (daca exista o clasa principala).

  1. Sa se scrie o aplicatie Java care afiseaza numerele de la 0 la 255 si caracterele UNICODE corespunzatoare. Numerele se vor afisa pe linii separate cu o pauza de t milisecunde intre doua afisari ( t va fi primit ca argument de la linia de comanda, in caz contrar va fi considerat ca avānd valoarea implicita 100). La fiecare 21 de linii se va opri afisarea si se va afisa mesajul : "Apasati Enter..."
    • Pentru a face o pauza in executia procesului curent se va folosi metoda sleep din clasa Thread
    • Pentru a opri momentan executia folositi secventa:
o        System.in.read();
o        System.in.skip(System.in.available());
  1. Scrieti un program Java care rezolva ecuatia de gradul 2 cu coeficientii a, b, c primiti ca argumente de la linia de comanda. Programul trebuie sa trateze toate situatiile care pot aparea.
  2. Sa se scrie o aplicatie Java care :
    • genereaza un vector de n numere intregi cuprinse in intervalul [a,b], unde a,b si n sunt primite ca argumente de la linia de comanda
    • sorteaza vectorul generat folosind, pe rand, algoritmul BubbleSort si metoda sort din clasa Arrays
    • afiseaza timpii estimativi de executie pentru fiecare din procedee

Pentru aflarea timpului necesar executie unei secvente de cod se va folosi metoda currentTimeMillis din clasa System

Consultati documentatia API pentru a afla informatii suplimentare despre metodele folosite!

  1. Implementati clasa Stiva, care sa simuleze o lista LIFO de obiecte oarecare (stiva eterogena). Clasa trebuie sa aiba urmatoarele metode:
    • empty : testeaza daca stiva este vida
    • peek : returneaza elementul din varful stivei, fara a-l elimina din stiva
    • pop : returneaza elementul din varful stivei si il elimina din stiva
    • push : adauga un element in stiva
    • search : cauta un element in stiva si returneaza distanta sa fata de varful stivei, respectiv 0 daca acesta nu este gasit.
    • toString : returneaza continutul stivei sub forma unui sir de caractere


Tipul de date al obiectelor din lista va fi
Object !
Nu se vor folosi clase ajutatoare cum ar fi
Stack, Vector, etc !

  1. Definiti si implementati clasa Rational, care sa permita lucrul cu numere rationale. Clasa va contine metodele uzuale.
  1. Scrieti o aplicatie care sa gestioneze angajatii unei companii. Informatiile care vor trebui memorate pentru fiecare angajat sunt: cod, nume, salar, data angajarii, adresa, telefon. Programul trebuie sa permita:
    • adaugarea unui nou angajat
    • modificarea informatiilor despre un angajat existent
    • stergerea unui angajat
    • listarea angajatilor curenti
    • cautarea unei persoane dupa nume sau cod


Folositi o clasa pentru descrierea "obiectelor" de tip angajat.

  1. Scrieti un program care sa simuleze un 'shell' pentru lucrul cu fisiere. Aplicatia trebuie sa permita:
    • listarea fisierelor dintr-un director sau directorul curent
    • listarea continutului unui fisier
    • schimbarea directorului curent
    • crearea unui nou director
    • stergerea/redenumirea unui fisier/director
    • concatenarea a doua sau mai multor fisiere
    • aflarea informatiilor despre un fisier/director


Comenzile vor fi citite de la tastatura impreuna cu argumentele lor sau vor fi alese printr-un meniu.

  1. Sa se implementeze clasa ArboreBinar care sa permita crearea, modificarea si parcurgerea(explorarea) unui arbore binar. La parcurgerea arborelui, in fiecare nod trebuie sa se execute prelucrarea informatiei din el prin intermediul unei functii primite ca parametru. (exemple de functii: afisarea informatiei din nod in diferite formate)

  2. Scrieti un program care cauta intr-un anumit director si, recursiv, in toate subdirectoarele sale fisiere cu extensia .java care contin un anumit text. Directorul in care se face cautarea si textul cautat vor fi primite ca argumente de la linia de comanda sau citite de la tastatura.
    Pentru aflarea fisierelor dintr-un director care au o anumita extensie folositi metoda
    list din clasa File si interfata FilenameFilter
  1. Sa se scrie un program care citeste de la tastatura doua multimi de numere īntregi si afiseaza reuniunea, intersectia, diferenta simetrica si produsul cartezian pentru multimile respective.
    Folositi clasa
    HashSet pentru reprezentarea multimilor.

  2. Scrieti o aplicatie care gestioneaza un mini-dictionar romān - englez. Programul trebuie sa permita adaugarea, stergerea de definitii, salvarea dictionarului pe disc, respectiv incarcarea acestuia in memorie.
    Folositi clasa
    HashMap pentru reprezentarea dictionarului.
    Folositi serializarea pentru salvarea/restaurarea dictionarului.
  1. Sa se scrie un program care afiseaza o fereastra pe suprafata careia sa se regaseasca urmatoarele tipuri de componente: Label, Button, Checkbox, Choice, List, Scrollbar, TextField, TextArea. Pentru fiecare componenta tratati cel putin unul din evenimentele pe care le poate genera.
  1. Sa se scrie un program care permite afisarea de imagini. Imaginile vor fi alese din fisiere aflate local prin intermediul unui dialog cu utilizatorul. La afisarea unei imagini se va specifica daca imaginea va fi scalata la dimensiunile suprafetei de afisare sau va fi afisata integral.

Folositi clasa JFileChooser pentru alegerea unui fisier imagine.
Incapsulati suprafata de desenare intr-un obiect de tip
JScrollPane pentru a putea afisa imagini mai mari decāt dimensiunile suprafetei de desenare fara a face scalarea imaginii

  1. Sa se scrie un program care sorteaza concurent un vector de numere īntregi generate aleator īntr-un interval oarecare, folosind doua metode de sortare diferite (BubbleSort si QuickSort). Cele doua metode de sortare vor fi implementate ca fire de executie pentru a putea fi executate concurent. Pe parcursul sortarii se vor afisa in permanenta vectorii partial sortati pentru fiecare metoda. Programul va avea interfata grafica.
    Dati o reprezentare grafica sugestiva vectorilor īn care fiecare element sa fie reprezentat printr-o linie de lungime egala cu valoarea elementului.
  2. Sa se scrie un program care permite afisarea de imagini. Imaginile vor fi alese din fisiere aflate local prin intermediul unui dialog cu utilizatorul. La afisarea unei imagini se va specifica daca imaginea va fi scalata la dimensiunile suprafetei de afisare sau va fi afisata integral.

Folositi clasa FileDialog pentru alegerea unui fisier imagine.
Incapsulati suprafata de desenare intr-un obiect de tip
ScrollPane pentru a putea afisa imagini mai mari decāt dimensiunile suprafetei de desenare fara a face scalarea imaginii.

Sortare rapida (quick sort)
Ideea : sortez un tablou a[p..q] : DIVIDE ET IMPERA
- Baza : q=p => a[p..q] sortat
- Pas de divizare : determina prin interschimbari un indice k a.ī.:
p <= k <= q;
pt orice i, p <= i <= k ----> a[i] <= a[k];
pt orice j, k < j <= q ----> a[k] >= a[j];
Indicele k se numeste PIVOT
- Rezolva recursiv subtablourile: a[p..k-1], a[k+1,q]
Complexitate medie: O(nlogn);

Scrieti un program client-server care sa permita īnregistrarea unor utilizatori. Programul de tip client va trimite catre server urmatoarele informatii: nume, e-mail, parola, serverul va verifica daca nu exista un alt utilizator cu acelasi nume si, īn caz afirmativ, va īnregistra noul utilizator. Serverul va trimite un mesaj catre fiecare client care a facut o cerere cu confirmarea sau infirmarea īnregistrarii acestuia.
Programul server va mai permite listarea tuturor utilizatorilor īnregistrati si stergerea unora dintre acestia .

  1. Scrieti un applet care sa deseneze un cerc ce se deplaseaza pe orizontala sau verticala īn interiorul unui dreptunghi.Initial cercul va porni īntr-o directie aleatoare. La impactul cu fiecare din marginile dreptungiului cercul va reveni īninteriorul acestuia, schimbāndu-si directia.
    Diametrul mingii si viteza de deplasare vor avea valori initiale primite ca parametri dar vor putea fischimbate si prin program.
  2. Creati un applet care sa permita introducerea unui utilizator (nume, parola) si a unei adrese web dupa care sa deschida pagina referita intr-o noua instanta a browserului. Informatiile introduse vor fi memorate intr-un fisier. Appletul va mai oferi posibilitatea de a realiza o statistica a adreselor vizitate de un anume utilizator.
  1. Creati o baza de date care sa contina doua tabele judete si localitati. Tabelul judete va contine coloanele cod, nume iar tabelul localitati va avea coloanele cod, nume, cod_judet . Scrieti o aplicatie Java care sa permita urmatoarele operatii:
    • adaugarea, stergerea unui judet sau localitate
    • listarea localitatilor unui judet
  2. Scrieti o aplicatie de tip SQL Manager care sa permita conectarea la o baza de date, introducerea de comenzi SQL si afisarea rezultatelor. Afisarea rezultatelor se va face prin intermediul unor tabele - fiecare interogare va afisa rezultatul intr-o fereastra seperata (folositi clasele JFrame, JInternalFrame, JTable
  1. Creati o aplicatie de tip "browser" de clase care sa permita navigarea prin fisierele cu extensia .class si sa afiseze, in situatia cand fisierul reprezinta o clasa java, informatii despre clasa respectiva (modificatori, nume, superclasa, interfete implementate, variabile membre, constructori, metode).

Document Info


Accesari: 4297
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )