Egyszerű "iskolafeladatokat" próbálgatok Java-ban:
Az iskola példa egy gombot tesz ki, melyre
változtat a feliraton.
import java.awt.*;
import java.applet.Applet;
public class ap extends Applet {
Button gomb1;
String s;
public void init() {
gomb1 = new Button("Gomb");
add(gomb1);
}
public boolean action (Event e, Object args){
if (e.target == gomb1) s = "alma";
repaint();
return true;
}
public void paint (Graphics g) {
g.drawString("Eredmény: " + s, 50, 80);
}
}
Működik is. A fordító azonban azt mondja, hogy
elavult dolgokat használok:
Fordításkor:
javac -Xlint ap.java
ap.java:16: warning: [deprecation] action(java.awt.Event,java.lang.Object) in java.awt.Component has been deprecated
public boolean action (Event e, Object args){
^
ap.java:5: warning: [serial] serializable class ap has no definition of serialVersionUID
public class ap extends Applet {
^
2 warnings
Kérdésem: mit használjak helyette?
- 2548 megtekintés
Hozzászólások
a method javadocja meg szokta mondani, hogy mit használj helyette
- A hozzászóláshoz be kell jelentkezni
Először valami Java könyvet, mert borzalmas a program stílusa, egyátalán nem követed a szokásos elnevezési konvenciókat.
Másodszor meg ott írja, hogy melyik osztály melyik metódusa deprecated, amelyet meg lehet nézni:
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Component.html#action%…
Le is írják, hogy az 1.1 verziótól kezdve célszerű ActionListener segítségével megvalósítani az események kezelését:
Deprecated. As of JDK version 1.1, should register this component as ActionListener on component which fires action events.
Honnan szedtél 1.0 verziójú Java példaprogramot? Két hónap és itt a Java 7...
--
http://wiki.javaforum.hu/confluence-2.10/display/FREEBSD
- A hozzászóláshoz be kell jelentkezni
Tényleg nem szép, de alapfeladatoknál teljesen mindegy hogy mi a verziószám. De ha magadtól tanulsz, mindenképpen kurrens anyaggal érdemes csak kezdeni.
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
Nem ertek egyet. Java 1.4-nel regebbre visszamenni nem szabad, nincs ertelme. Az mar annyira regi, hogy tulajdonkeppen mar nem is lehet nagyon tudni, miert van meg egyaltalan benne a platformban. Le se szabadna forduljon (marmint az 1.4-nel regebbi tamogato kod).
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Szerintem már 1.5 alatt sem kellene oktatni.
1.4-en nincs foreach:
for( String s : array ) ...
nincs generics:
ArrayList<String> arrayList = new ArrayList<String>();
nincs automatikus kasztolás:
Integer integer = new Integer();
integer = 2;
nincs annotation
...
Mire az egyetemisták elvégzik az egyetemet, már az 1.5 is elavult lesz. Éppen ezért mindig a legfrissebbet kell oktatni.
- A hozzászóláshoz be kell jelentkezni
"*ezért* mindig a legfrissebbet kell oktatni"
ha betanított munkásokat képez az egyetem feltétlen :)
(*: ez egy szempont, de nem indok)
- A hozzászóláshoz be kell jelentkezni
Ezzel nem ertek egyet. Nem feltetlen mindig Sun JVM ala kell fejleszteni, az opensource VM-ek pedig elsosorban 1.4 kompatibibilisek.
Az automata castolas pedig valojaban autoboxing. Hulyen is csinaltad, mert a helyes kod ilyen:
Integer myint = 2
A te kodod meg letrehoz egy integer-t (egyaltalan ennek igy van ertelme?!), eldobja, majd csinal egy autoboxingos hozzarendelest. Kabe ez fut le valojaban:
Integer integer = new Integer();
integer.dispose(); // kvazi muvelet
integer = new Integer(2);
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
A Sun JVM is opensource. Van egyátalán olyan gyakorlati felhasználás ahol nem ezt használják?
Nem arra kéne alapozni az oktatást hogy a GPL kirakatprojectek fél-egy évtizedes lemaradásban vannak... (ez sajnos igaz az OpenGL támogatásra is)
- A hozzászóláshoz be kell jelentkezni
Jesszus... persze.
Azt hiszed, 1.5-tel van telitelepitve a vilag?
A java kodok elvileg hosszutavu rendszereket szolgalnak ki sok helyen, tehat nem 1-2 evente cserelik a programot, hanem pl. 10.
A masik, hogy pl. GWT, vagy J2ME, vagy egyeb embedded java dolgok, ezeknek nincs 1.5-os valtozatuk...
- A hozzászóláshoz be kell jelentkezni
GWT: Már elég régóta ismeri az 1.5-ös szintaxist.
J2ME valóban probléma, de pl. Android korrekt Java 1.5 forrásnyelvet használ.
Egy jól használható megoldás a különböző "retro" fordítók használata, pl.:
retrotranslator
Így a fejlesztésnél ki lehet használni az új funkciókat, de az elkészült szoftver elfut régebbi rendszereken is.
Üdv,
Gergely
- A hozzászóláshoz be kell jelentkezni
Az android nem j2me, hanem dalek. Megcsak nem is JVM felett fut, csak java nyelvu (mint a j# a .net vilagban)
Az informatikai rendszerek tobbsege legacy rendszer, tehat nem az van, hogy te odamesz, kidobod a regi rendszert, es epitesz java 5 vagy barmi alapon ujat, hanem iratnak veled egy uj modult a mar meglevo, kapaszkodj meg, mostani ugyfelunknel pl. java 1.2-es rendszerhez, mert olyan cucchoz van (baromi draga) licencuk, amibe ez van beepitve. Ezen meg a retrotranslator se segit.
- A hozzászóláshoz be kell jelentkezni
Senki nem mondta, hogy J2ME-t implemental az Android. Azt mondta, hogy a nyelve Java 1.5. Mint a j# a .net vilagban.
- A hozzászóláshoz be kell jelentkezni
hogy mivan? GWT-nek nincs java 5-ös változata???
mondjuk úgy, hogy 1.5.3-tól kezdve van, azóta kijött: 1.6.x, 1.7.x, és kábé egy hete a 2-es!
_______
14.77 %
- A hozzászóláshoz be kell jelentkezni
a javascriptre fordulo resznek is?
szerk: ja, valami van: http://code.google.com/p/gwt-ent/
- A hozzászóláshoz be kell jelentkezni
Oktatni attól még nem biztos hogy az elavult változatot kellene.
Ha valaki mégis régi JVM-hez készülő projectbe kerül, és valóban tud programozni, nem jelenthet neki komoly gondot az adaptálódás.
Amúgy, még mindig áll a másik kérdésem, !Sun JVM-et használnak valahol? Nem költői kérdés, tényleg érdekel.
- A hozzászóláshoz be kell jelentkezni
Persze, IBM-nel.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Tényleg nem szép, de alapfeladatoknál teljesen mindegy hogy mi a verziószám. De ha magadtól tanulsz, mindenképpen kurrens anyaggal érdemes csak kezdeni.
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
csak a szóhasználat:
"deprecated": magyarul ellenjavallt, azaz működik, de valami okból nem javasolják (nem biztonságos vagy mert következő verziókban már nem fog működni)
"elavult": valószínűleg ha működik az csak hibának tudható be :)
- A hozzászóláshoz be kell jelentkezni
Java eseteben a deprecated inkabb az elavult ertelemben hasznalatos, ha valahol deprecated uzeneteket dobal a javac, az nagyon komolyan veendo. Ugyan van egy csomo ilyen, ami mar tobb verzio ota deprecated, csak meg vagy lustak voltak kivenni, vagy valami belul hasznalja es lustak voltak elrejteni.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Kiegészítésként: ,,deprecated'': elavult, az előző Java változatban és a jelenlegiben benne van, de a következőben már nem lesz, helyette használd a javasoltat.
Ha időbe hosszabb távon akarod a Java alkalmazásodat forrásszinten is karbantartani -- tehát ha pl. nem egyszeri feladatleadásként készítetted el -- akkor érdemes a deprecated jelzést megszívlelni.
G.
===========================================
"Share what you know. Learn what you don't."
- A hozzászóláshoz be kell jelentkezni
deprecated = ellenjavallt
obsolete = elavult
deprecated: rengeteg olyan deprecateddel dolgozom most, a 6-al, ami már a 2-ben deprecated lett
obsoleted, pl:
http://java.sun.com/javase/6/docs/api/java/awt/Event.html
ps: nem tudod honnan írtad amit írtál, és itt: http://java.sun.com/javase/6/docs/api/help-doc.html
szinte ugyanazt látom, egy apró eltéréssel: "may be"
meg "not recommended", ami szintén nem azt jelenti hogy "ne használd"
- A hozzászóláshoz be kell jelentkezni
Egy dolog, hogy az apidoc-ba mi van irva, egy masik dolog, hogy mi a normalis fejlesztoi hozzaallas. A normalis fejlesztoi hozzaallas az, hogy TILOS HASZNALNI ami deprecated, mert karos platformverzio-fuggest viszel a kodba. Plane egy olyant tilos hasznalni, ami mar regebbota deprecated mint 1.4.
Altalanossagban elmondhato, hogy a Java platform fejlesztoi igyekeznek mindig alternativat kinalni a deprekalt kodreszekre, tehat gyakorlatilag semmibe nem kerul elkerulni ezen kodok hasznalatat.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
csak a szóhasználatról, nem pedig a fejlesztői hozzáállásról volt szó, nehogymá' az anglish legyen választékosabb mint a magyar
ők négybetűs szavakkal még a relativitáselméletet is leírják, itt meg az obsolete és deprecated szót is úgy fordítanád hogy tilos :)
- A hozzászóláshoz be kell jelentkezni
Nemtom, en a datumkezeles kornyeken multkor siman hasznaltam deprecated reszt, mert valaszthattam az egyszeru-celszeru regi, es a javasan elb.ott uj API kozul... Mar nem emlekszem, miert epp java kellett, nyilvan ahol lehet, ott valami ertelmesebb nyelvet hasznalok...
(Picit flamy, tudom.. de nekem a PHP is ertelmesebb nyelv :) Lattam en mar PHP-Java vegyes rendszereket eleget, ott irtom bennuk a javat, ahol lehet.. es azert nem garazscegeknel, meg nem pici code-base-nel.)
- A hozzászóláshoz be kell jelentkezni
Érdemes hozzátenni, hogy nincs Obsoleted annotáció csak Deprecated, s ez utóbbit születése óta arra használják a (JDK) fejlesztők, hogy jelöljék vele azokat az osztályokat és metódusokat, amelyek használata valamilyen okból nem célszerű. Az obsoleted dolgok halmaza része a deprecated dolgok halmazának, tehát a deprecated jelölheti az obsoleted dolgokat is, de az obsoleted nem fedi a teljes deprecated halmazt.
--
http://wiki.javaforum.hu/confluence-2.10/display/FREEBSD
- A hozzászóláshoz be kell jelentkezni