Page 1 of 1

Java-ongelmat

Posted: Thu Jan 01, 2009 1:11 am
by Jani
Elikkäs tänne voisi laittaa Java ongelmia.

Oma kysymykseni on: Mistä löytäisin suomenkielisen mutta hyvän Java oppaan?

EDIT: olin yrittänyt googlettaa, mutta en onnistunut.

Re: Java-ongelmat

Posted: Thu Jan 01, 2009 1:13 am
by -Z-
Jani wrote:Elikkäs tänne voisi laittaa Java ongelmia.

Oma kysymykseni on: Mistä löytäisin suomenkielisen mutta hyvän Java oppaan?
http://www.google.fi/

Tässä vielä haku tehty puolestasi: http://www.google.fi/search?hl=fi&rlz=1 ... =Hae&meta=

Tai, jos nyt ihan vakavissaan ollaan, niin suositelisin tarkastamaan ohjelmointiputkan.

Re: Java-ongelmat

Posted: Thu Jan 01, 2009 1:27 am
by Jani
Ookei... Mutta mihin muotoon pitää tallentaa että voi suorittaa??

Re: Java-ongelmat

Posted: Thu Jan 01, 2009 2:28 am
by TheFish
Jani wrote:Ookei... Mutta mihin muotoon pitää tallentaa että voi suorittaa??
Siis sitä sorsaahan (.java) ei suoriteta, vaan se pitää käännetään (.class tiedostoksi) ja suoritetaan se. Tuo kääntäminen tapahtuu komentoriviltä komennolla 'javac', jolle annat käännettävät tiedostot (muista laittaa .java pääte). Käännetyn .class tiedoston saat suoritettua komennolla 'java', jolle annat main-metodin sisältävän .class tiedoston (tähän ei laiteta päätettä). Mikäli tuo main-metodin sisältävä tiedosto on jossain paketissa (package), niin sille ei anneta polkua normaalissa muodossa (esim. "testi/Main") vaan erotetaan paketin nimi pisteellä (eli "testi.Main").

Re: Java-ongelmat

Posted: Thu Jan 01, 2009 2:48 am
by -Z-
TheFish wrote:
Jani wrote:Ookei... Mutta mihin muotoon pitää tallentaa että voi suorittaa??
Siis sitä sorsaahan (.java) ei suoriteta, vaan se pitää käännetään (.class tiedostoksi) ja suoritetaan se. Tuo kääntäminen tapahtuu komentoriviltä komennolla 'javac', jolle annat käännettävät tiedostot (muista laittaa .java pääte). Käännetyn .class tiedoston saat suoritettua komennolla 'java', jolle annat main-metodin sisältävän .class tiedoston (tähän ei laiteta päätettä). Mikäli tuo main-metodin sisältävä tiedosto on jossain paketissa (package), niin sille ei anneta polkua normaalissa muodossa (esim. "testi/Main") vaan erotetaan paketin nimi pisteellä (eli "testi.Main").
Tuo muuten minuakin kiinnosti, että miltä komentoriviltä tuo sitten käännetään? Perus Windows-CMD:llä en ainakaan saanut toimimaan.

Re: Java-ongelmat

Posted: Thu Jan 01, 2009 3:28 am
by Jani
en minäkään.

Miten tekstin "Hei Maailma" saa tulostettua koska seuraava ei toimi JCreator LE tulkilla?

Code: Select all

class e {
	public void main() {
		System.out.println("Hei Maailma");
	}
};

Re: Java-ongelmat

Posted: Thu Jan 01, 2009 4:20 am
by temu92
Kyseessä on silti CB foorumi ja veikkaan ettei täällä lähellekään jokainen osaa javaa tai tiedä miten sitä käytetään. Joojoo täällä on kyllä C++ aihekin mutta mainostetaanpa nyt kuitenkin tällaisille kysymyksille paljon parempaa paikkaa:
http://www.ohjelmointiputka.net/keskustelu/

Nonetheless, itsellä oli javaa 9. lk mutta en nyt enää muista siitäkään mitään. Kurssista silti nettosin 10 numeroksi :) Vinkkinä vielä että mieluummin kannattaa käyttää ainakin aluksi jotain IDEä eikä yrittää suoraan komentoriviltä jos muitakin keinoja on. Eclipse on todella hyvä, lataappa se (google on ystäväsi).

Re: Java-ongelmat

Posted: Thu Jan 01, 2009 2:19 pm
by TheFish
-Z- wrote:
TheFish wrote:
Jani wrote:Ookei... Mutta mihin muotoon pitää tallentaa että voi suorittaa??
Siis sitä sorsaahan (.java) ei suoriteta, vaan se pitää käännetään (.class tiedostoksi) ja suoritetaan se. Tuo kääntäminen tapahtuu komentoriviltä komennolla 'javac', jolle annat käännettävät tiedostot (muista laittaa .java pääte). Käännetyn .class tiedoston saat suoritettua komennolla 'java', jolle annat main-metodin sisältävän .class tiedoston (tähän ei laiteta päätettä). Mikäli tuo main-metodin sisältävä tiedosto on jossain paketissa (package), niin sille ei anneta polkua normaalissa muodossa (esim. "testi/Main") vaan erotetaan paketin nimi pisteellä (eli "testi.Main").
Tuo muuten minuakin kiinnosti, että miltä komentoriviltä tuo sitten käännetään? Perus Windows-CMD:llä en ainakaan saanut toimimaan.
Nuo komentorivi komennot siis toimivat vain jos sinulta löytyy PATHistä joku jdk (java development kit). Nuohan siis eivät oikeastaan ole komentoja, vaan jdk:n sisältämiä ohjelmia, jotka löytyvä jdk:n 'bin' hakemistosta. Eli voit yrittää käyttää komentona täyttä polkua jdk:hon (esim "C:\Program Files\Java\jdk1.6.0_10\bin\javac").
EDIT:

Itse suosittelisin käyttämään alkuun komentoriviä ja esim notepad++ editorina, koska se pakottaa oikeasti opettelemaan asiat. IDE:t kuten Eclipse sisältävät sen sijaan kaikki mahdolliset automaattiset täydennykset ja valmiit koodin generointi viritelmät...


Re: Java-ongelmat

Posted: Thu Jan 01, 2009 8:01 pm
by Khamûl
[quote="Jani"]en minäkään.

Miten tekstin "Hei Maailma" saa tulostettua koska seuraava ei toimi JCreator LE tulkilla?

Code: Select all

class e {
	public void main() {
		System.out.println("Hei Maailma");
	}
};[/quote]
[/quote]
en tiiä tosta tulkista, enkä ees tiiä puhutaan ko samasta asiasta, mutta eclipsellä ja netbeansillä se muistaakseni meni näin:
EDIT: heti meinas tulla moka kun alkaa neuvomaan :P eli ajoin läpi eclipsellä ja toimi:
[code]
public class e {

		public static void main(String args[])
		{System.out.println("HelloWorld");}
		
}
sulta tais puuttua "String args[]" tuolta mainista, älä kysy, se on kuulemma jotain rautaan liittyvää syvempää mikä pitää siellä olla aina....
tai näin on ainakin mulle sanottu, oon tosin opetellu tutojen ja kaverien välityksellä nii että... :D

theFish: mutta toisaalta jos aloittaa notepadillä, voi turhautua kun joutuu koko ajan etsimään jotain pikkuvirheitä.....
mutta täähän on näitä mielipidekysymyksiä....

EDIT: näyttävästi ryssin aika pahasti nuo quotet ja codet, mutta kait siitä saa selvää xD

Re: Java-ongelmat

Posted: Thu Jan 01, 2009 8:13 pm
by TheFish
Tuo 'String[] args' on siis taulukko joka sisältää ohjelmalle annetut komentorivi parametrit (eli jos ohjelma ajetaan komentoriviltä ja sen perään kirjoitetaan jotain arvoja, esim. tekstieditoriin avattavan tiedoston polku). Lisäksi tuossa oli se vika, että luokkaa 'e' ei oltu määritelty julkiseksi (public). main-metodin sisältävän luokan pitää olla aina julkinen, ja jokaisessa tiedostossa pitää muutenkin olla yksi julkinen luokka.
EDIT:

Tietysti voisihan tässä vielä valittaa siitä, että mitään java-tulkkia ei ole olemassakaan. Se on kääntäjä. Mutta ehkä tämä menee jo liikaa pilkun viilaamiseksi...

EDIT:

Ja minkä vielä huomasin: luokan perään ei laiteta puolipistettä (siis sinne loppuun viimeisen sulun jälkeen, kuten olit laittanut (jani siis))


Re: Java-ongelmat

Posted: Thu Jan 01, 2009 10:06 pm
by Khamûl
Lisäksi tuossa oli se vika, että luokkaa 'e' ei oltu määritelty julkiseksi (public). main-metodin sisältävän luokan pitää olla aina julkinen, ja jokaisessa tiedostossa pitää muutenkin olla yksi julkinen luokka.
nii alunperin olin kanssa lisäämässä tota publicia, mutta epäröin ja testasin, ja eclipse ajoi ton ilmankin. miksi? :o

Re: Java-ongelmat

Posted: Thu Jan 01, 2009 10:14 pm
by TheFish
Khamûl wrote:
Lisäksi tuossa oli se vika, että luokkaa 'e' ei oltu määritelty julkiseksi (public). main-metodin sisältävän luokan pitää olla aina julkinen, ja jokaisessa tiedostossa pitää muutenkin olla yksi julkinen luokka.
nii alunperin olin kanssa lisäämässä tota publicia, mutta epäröin ja testasin, ja eclipse ajoi ton ilmankin. miksi? :o
Oma mokani näemmä. Olen aina ollut siinä uskossa että mainin pitää olla public luokan sisällä, mutta näemmä sen ei tarvitsekkaan. no, aina oppii uutta. (Siis tarkennuksena, olen siis näemmä ymmärtänyt väärin sen, että tiedostossa pitäisi olla yksi julkinen luokka. Se opas josta joskus aikanaan tuonkin opettelin varmaankin tarkoitti että julkisia luokkia voi olla vain yksi per tiedosto, mutta ei tarvitse olla yhtään)

Re: Java-ongelmat

Posted: Fri Jan 02, 2009 4:10 am
by Murskaaja
TheFish wrote:
Khamûl wrote:
Lisäksi tuossa oli se vika, että luokkaa 'e' ei oltu määritelty julkiseksi (public). main-metodin sisältävän luokan pitää olla aina julkinen, ja jokaisessa tiedostossa pitää muutenkin olla yksi julkinen luokka.
nii alunperin olin kanssa lisäämässä tota publicia, mutta epäröin ja testasin, ja eclipse ajoi ton ilmankin. miksi? :o
Oma mokani näemmä. Olen aina ollut siinä uskossa että mainin pitää olla public luokan sisällä, mutta näemmä sen ei tarvitsekkaan. no, aina oppii uutta. (Siis tarkennuksena, olen siis näemmä ymmärtänyt väärin sen, että tiedostossa pitäisi olla yksi julkinen luokka. Se opas josta joskus aikanaan tuonkin opettelin varmaankin tarkoitti että julkisia luokkia voi olla vain yksi per tiedosto, mutta ei tarvitse olla yhtään)
Public-määre on vain näkyvyyden säätelyä, se ei määritä mitä luokka (tai mikään muukaan) voi sisältää ja mitä ei. Jos public-määreen jättää pois esim. luokasta, sen näkyvyys rajoittuu sen kuulumaan pakkaukseen (oletusarvoisesti samassa hakemistossa olevat luokat kuuluvat samaan pakkaukseen (ns. nimetön pakkaus)).

Ja kuten TheFish jo korjasikin, tiedostossa voi olla vain yksi julkinen luokka, mutta ei ole pakko. Ja sen julkisen luokan (jos se siellä on) nimen on oltava sama kuin tiedoston nimen, mutta siitähän kääntäjä jo älähtääkin. :)


PS. java on tulkattava kieli, joten luonnollisesti se tulkkikin on olemassa (java-virtuaalikoneet ja selainten tavukoodi-tulkit).

Re: Java-ongelmat

Posted: Fri Jan 02, 2009 3:11 pm
by TheFish
Murskaaja wrote:PS. java on tulkattava kieli, joten luonnollisesti se tulkkikin on olemassa (java-virtuaalikoneet ja selainten tavukoodi-tulkit).
Lienee jo turhaa pilkun viilaamista tosiaan, mutta voisin silti väittää, että java tulkkia ei ole olemassa. Java virtuaalikonehan tulkkaa käännettyä tavukoodia, jota saa kyllä aikaiseksi muillakin kielillä kuin javalla. (Ja virtuaalikoneissahan on yleensä hotspot ominaisuus, joten koko koodi ei edes pyöri tulkattuna. En kyllä tiedä lasketaanko tuo kuitenkin tulkkaukseksi)
Mutta oli miten oli, ainakaan tuossa tapaukessa ei voinut olla kyse virtuaalikoneesta, koska jani ei olisi mitenkään voinut saada tuota kääntäjästä läpi.

Re: Java-ongelmat

Posted: Fri Jan 02, 2009 6:54 pm
by Ilmuri
Selkeytetäänpäs: Java-kääntäjä kääntää lähdekoodin tavukoodiksi, jonka Java-tulkki joko suorittaa tai kääntää lennossa konekielelle (JIT).