Programiranje

Java-Pitanja i odgovori

emerik uto 26.4.2011 15:05

Evo,samo da na početku kažem,ova tema bi mogla biti tema u kojoj se potavljaju pitanja i odgovara na njih vezano uz programski jezik Java da se za svako pitanje ne otvara druga tema.

Moje pitanje je:Kako vidjeti exe file kad izkompajliram program?

0,03 uto 26.4.2011 15:59

java se ne kompajlira u .exe... postoje nacini da dobijes .exe datoteku u javi, al u osnovi i za nju treba java biti instalirana na kompu na kojem se pokrece jer se ne pokrece kao .exe nego kao .jar

0,03 uto 26.4.2011 18:09

u osnovi razmisljaj o javi na nacin da operativni sustav ne vrti IZRAVNO kod koji napises.. zato i imas instaliran Java Runtime Environment..

u principu JRE je napisan zasebno za svaki operativni sustav i kad ti napises kod, ne pises ge za OS nego za taj JRE.. prilikom izvrsavanja JRE prevodi tvoj kod u bytekod...

ugrubo objasnjeno...

da se vratim na temu - definicija .exe fajla po wikipediji kaze : "EXE is the common filename extension denoting an executable file (a program) in the DOS, OpenVMS, Microsoft Windows, Symbian, and OS/2 operating systems"

znaci, kada bi se java fajl kompajlirao u .exe prestao bi automatski biti cross-platformski... a java u principu ne funkcionira na taj nacin...

 

0,03 uto 26.4.2011 18:48

pa.. tako kako sam napisao.. :)

napises kod (aplikaciju) i JRE ju izvodi na zeljenom racunalu.. (naravno, ako je JRE instaliran (mislim da se na windowsima automatski neka od zadnjih verzija jave instalira))

 

samo sto u konacnici nemas .exe fajl nego .jre fajl (i jedan i drugi su "executable" -> ".exe" striktno vezan za MS stuff, a ".jre" cross platformski (u teoriji))

emerik sri 27.4.2011 17:32

Evo,samo da javim ovo jer moj prvi program u Javi,vrlo jednostavan.Izračunava cijenu tenesica nakon sniženja :D

Ako imate kakve zamjerke ili tako nešto samo recite :)

U školi učim Pascal koji je jednostavan,tu je sintaksa malo teža za pohvatati :D

 

import java.io.*;public class Maths {    public static void main(String args[]) {       String tenisice,postotak;       double cijena,cifra,ukupno;       BufferedReader reader;       reader = new BufferedReader(new InputStreamReader(System.in));       System.out.println("Kolika je cijena tenesica ?");       try {          tenisice = reader.readLine();          cijena = Double.parseDouble(tenisice);          System.out.println("Koliko je sniženje ?");          postotak = reader.readLine();          cifra = Double.parseDouble(postotak);          ukupno = cijena - (cijena*(cifra / 100 ));          System.out.println("Cijena tenesica nakon sniženja je " + ukupno + " kuna");          reader.close()   }       catch (IOException ioe) {          System.out.println("Greška kod ulaznih ili izlaznih podataka");       }    }}

Quantum čet 28.4.2011 00:01
KKristijan kaže...
Evo imam i ja pitanjce...gdje sve danas java nalazi primjenu?

 

Najčešće domene primjene rangiraju od web-aplikacija (složenosti web-stranice pa do kompleksnih Enterprise-grade aplikativnih rješenja u najrazličitijim domenama) pa do embedded/mission-critical sustava (pogledati aJile Systems Inc. i njihove Java direct execution CPU-ove).

 

Ono gdje zasada Java nema naročitu primjenu jesu, primjerice, 3D-intensive proračuni ili znanstvene simulacije.

rustweaver čet 28.4.2011 02:06
Quantum kaže...
KKristijan kaže...
Evo imam i ja pitanjce...gdje sve danas java nalazi primjenu?

Ono gdje zasada Java nema naročitu primjenu jesu, primjerice, 3D-intensive proračuni ili znanstvene simulacije.

Ali se i to mijenja, recimo Art of illusion program za 3d modeliranje, Sunflow renderer, ili svepopularni Minecraft :D

Zanimljivo je zapravo koliko je programa pisano u tim nekim "neprikladnim" jezicima. Recimo Wings3D modeler koji najvise koristim, pisan je u erlangu. Sto vise reci?

 

Velika prednost Jave je sto je jako blizu onom: "write once, run everywhere" principu. Gotovo da i sam pozelim nauciti Javu...

Quantum čet 28.4.2011 18:34
rustweaver kaže...
Quantum kaže...
KKristijan kaže...
Evo imam i ja pitanjce...gdje sve danas java nalazi primjenu?

Ono gdje zasada Java nema naročitu primjenu jesu, primjerice, 3D-intensive proračuni ili znanstvene simulacije.

Ali se i to mijenja, recimo Art of illusion program za 3d modeliranje, Sunflow renderer, ili svepopularni Minecraft :D

Zanimljivo je zapravo koliko je programa pisano u tim nekim "neprikladnim" jezicima. Recimo Wings3D modeler koji najvise koristim, pisan je u erlangu. Sto vise reci?

 

Velika prednost Jave je sto je jako blizu onom: "write once, run everywhere" principu. Gotovo da i sam pozelim nauciti Javu...

 

Za AoI nisam znao, thx - no ipak, (MineCraft na stranu) ovi primjeri koje si naveo nisu produkcijski, već više proof-of-concept.

 

Samo mali dodatak - nisu jezici per se "neprikladni", već su zakoni fizike ne-elastični :)

 

Ovo je sad složenija tema, ali interpreterski jezici (a Java to u svojoj srži jest, JIT-u i ostalim naprecima u optimizaciji HotSpota usprkos) u sebi nose inherentni performance penalty ponajviše zbog VM-a, wrappera/sandboxa koji predstavlja okolinu u kojoj se izvršava Java. Teško da će se ta barijera tako skoro savladati, pa stoga predviđam da će ipak i nadalje primjene u kojima je bitan svaki CPU-cycle (opravdano) zazirati od Jave - i to najmanje tako dugo dok sam (J)VM ne počne biti bolji u iskorištenju hardvera od većine najboljih programera; pitanje je uopće da li je takvo što teoretski moguće.

 

Tako da za idućih 10-ak godina ne vjerujem da će se tabori bitnije opsegom mijenjati - supercomputing, AI research i slične primjene će ostati na C(++)/Assembler rješenjima, dok eventualno nešto veći pomak procjenjujem u području 3D igara, koje bi mogle biti malo češći prizor na JVM-u čisto iz razloga sirovog povećanja raspoloživih računalnih resursa na tipičnom desktopu.

 

BTW, iz mog iskustva ne bih baš vjerovao toj WORM-krilatici....iako ona vrijedi za sirovi Java kod, danas je ultra-raritet vidjeti ozbiljnu Java-aplikaciju pisanu tako da se gotovo bez ikakvih customizacija porta s platforme na platformu (nažalost).

rustweaver čet 28.4.2011 20:25
Quantum kaže...
BTW, iz mog iskustva ne bih baš vjerovao toj WORM-krilatici....iako ona vrijedi za sirovi Java kod, danas je ultra-raritet vidjeti ozbiljnu Java-aplikaciju pisanu tako da se gotovo bez ikakvih customizacija porta s platforme na platformu (nažalost).

Dobro, ja sam to sa korisnickog stajalista komentirao. Meni radi svugdje, a sad ne znam koliko je truda sa programerske ulozeno da bi se meni stvorila ta "portabilnost"...

Sa ostatkom posta se u potpunosti slazem.

Quantum sub 30.4.2011 07:48
dario111cro kaže...

Kako da smanjim "zahtjevnost" aplikacije pisane u Javi?

 

Ovisi - odgovor nije baš jednostavan.

 

Iz mog iskustva, postoje određeni "fiksni troškovi" koji se ne mogu izbjeći (primjerice, classloading), postoje "fiksni troškovi" koji se stohastički pojavljuju tijekom života aplikacije (primjerice, garbage collection), a postoje i troškovi izvršenja samog koda koji ovise o algoritamskom rješenju problema i ispravnosti primjene određenih jezičnih elemenata u rješenju problema (tj. "kvaliteta koda").

 

Kako ti je čovjek iznad rekao, ovo zadnje je očit način kako ubrzati izvođenje nekog koda - u ekstremnim slučajevima, moguće je raditi i optimizaciju generiranog bytecodea (to su instrukcije koje JVM izvršava, a pandan su assemblerskim instrukcijama koje compiler C/C++-a generira), no problem neefikasnosti zbog postojanja JVM-a je nezaobilaziv.

 

Kao što smo i rekli iznad - s obzirom na domenu primjene, nekome je to showstopper, a nekome nije.

Quantum sub 30.4.2011 11:01
neznam_ime kaže...

ja trenutno  ucim  c++, pa me zanima da li je tesko kasnje prec na javu i jel to uopce i pametno?

 

Što se tiče prvog pitanja - mislim da ćeš imati malo ili nimalo problema, štoviše.

 

Sintaksa Jave je mahom derivirana iz C++-a, upravo zbog tadašnjeg (smatram, ispravnog) stajališta da je bitno što više olakšati migraciju (nezadovoljnih) C++ programera na Javu i time direktno utjecati na popularizaciju samog jezika.

 

Razlog zašto je Java sredinom 90-ih i nastala jest bilo upravo nezadovoljstvo nekim dijelovima C++-a - preciznije, riječ je o takvim stvarima kao što je:

1) problem memory managementa - u C++-u se moramo ručno brinuti za te probleme, dok Java to (kako-tako) rješava Garbage Collectorom iz kutije

2) rad sa threadovima koji u C++-u nije podržan nativno, dok Java ima svoj Thread API (java.lang.thread)

3) problem višestrukog nasljeđivanja, koji je, primjerice u Javi totalno onemogućen, itd.

4) problematičan rad s pointerima (potrebno je puno opreza i vještine u radu s njima i lako se griješi, što si sigurno i sam primijetio), koji su u Javi u vrlo dobro maskirani i zapravo se s njima direktno niti ne može raditi

 

Da se razumijemo, danas postoje C++ libovi koji se includaju i koji dopunjavaju i olakšavaju, recimo rad s threadovima ili rade automatski memory management, ali.....gledajući sa stanovišta popularnosti i rasprostranjenosti, to je premalo i prekasno - Java je zasada neprikosnovena po tom pitanju. Istini za volju, sprema se i nova specifikacija C++-a (radnog imena C++0x) koja bi trebala ove godine biti finalizirana i koja bi trebala dosta poboljšanja i olakšanja donijeti, ali dok to zaživi.....

 

Drugi dio tvog pitanja je već teži - to je nešto što ćeš morati sam ocijeniti (vidi postove iznad).

 

Na stranu moje osobno mišljenje da je loše učiti prvo C, a onda Javu (trebalo bi biti obratno), sve ovisi o tvojim afinitetima (koje probleme i u kojoj domeni želiš raditi) te, rekao bih toleranciji na bol (Java je puno lakša za rad, barem inicijalno).

Quantum sub 30.4.2011 17:07
0,03 kaže...

nacuo sam (ne znam koliko je istine u tome) da su sustavi na bankomatima kod nas napisani u javi...

 

da nebi bilo rekla kazala, neka potvrdi netko tko je siguran...

 

Misliš li da je to loše?

0,03 sub 30.4.2011 18:55

pa i nemam neko konkretno mišljenje o tome..

as long as it works, its ok..

 

osobno izbjegavam javu jer je spora i trenutno ne postoji IDE koje nema "mind of its own" kad je rijec o izradi GUIa...

ovo govorim vezano za izradu CRUD-like desktop aplikacija sa GUIem, a to najcesce i radim.. naravno, to se izbjegne rucnim kodiranjem GUIa za sto najcesce covjek nema vremena...

 

Ćoby sri 12.10.2011 21:51

Pozdrav!

 

Imam jedan problem s Javom...Često mi izbacuje(sam od sebe) na kompu neki prozorčić u kojem piše nešto tipa:floating report not supported s navedenim odredišnim direktorijem te greške...sad me zanima kako to riješiti...također nemogu pokrenuti 2 aplikacije koje mi služe za update podataka s jednog online managera...Javu 6 update 27 ne mogu instalirati,skinuo sam java 7 ali i dalje isti problem...kada želim napraviti update u tim aplikacijama,izbaci mi ovo:java.net.ConnectException:Connection refused:connect ili detaljnije:

 

pl.pronux.sokker.exceptions.SVSynchronizerCriticalException: No response

pl.pronux.sokker.downloader.Synchronizer.run(Unknown Source)

pl.pronux.sokker.ui.actions.CoreAction.run(Unknown Source)

pl.pronux.sokker.ui.widgets.custom.ProgressBarCustom$3.run(Unknown Source)

Caused by: java.net.ConnectException: Connection refused: connect

java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)

java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)

java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)

java.net.AbstractPlainSocketImpl.connect(Unknown Source)

java.net.PlainSocketImpl.connect(Unknown Source)

java.net.SocksSocketImpl.connect(Unknown Source)

java.net.Socket.connect(Unknown Source)

java.net.Socket.connect(Unknown Source)

sun.net.NetworkClient.doConnect(Unknown Source)

sun.net.www.http.HttpClient.openServer(Unknown Source)

sun.net.www.http.HttpClient.openServer(Unknown Source)

sun.net.www.http.HttpClient.<init>(Unknown Source)

sun.net.www.http.HttpClient.New(Unknown Source)

sun.net.www.http.HttpClient.New(Unknown Source)

sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)

sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)

sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)

sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)

pl.pronux.sokker.downloader.SokkerAuthentication.postDataToPage(Unknown Source)

pl.pronux.sokker.downloader.SokkerAuthentication.login(Unknown Source)

pl.pronux.sokker.downloader.Synchronizer.run(Unknown Source)

pl.pronux.sokker.ui.actions.CoreAction.run(Unknown Source)

pl.pronux.sokker.ui.widgets.custom.ProgressBarCustom$3.run(Unknown Source)

 

 

Kako to mogu riješiti?Nešto sam čitao na netu a prijedlozi većine su bili provjera firewalla i internet povezanosti...win firewall mi je isključen,izbrisao sam CSI antivirus/firewall,internet mi radi,jedino što ostaje jest Java...pošto nemam pojma o programiranju ili bilo kakvom prčkanju po javi,primoran sam vas zamoliti za pomoć