webForumDet fria alternativet

Java - ny kod på gammal JRE?

4 svar · 330 visningar · startad av hema80

hema80Medlem sedan sep. 2004137 inlägg
#1

Alltså om vi pratar om JavaScript som är ett helt interpretenerande (stavar jag rätt?) språk, så gäller ju att om man använder ny typ av kod så måste interpretenatorn vara up to date. Samma sak med ActionScript, använder jag ny typ av kod så måste Flashplayern vara up to date för att köra det. När utvecklingen av koden går framåt så måste interpretenatorn också uppdateras.

Men java då? Om jag använder något som är nytt för Java SDK 1.5, tex scanner-classen, kompilerar (till bytekod) och ger till någon med JRE 1.4. Kommer det fungera då? Man tycker ju att eftersom Java är delvis ett kompilerenade språk så borde översättningen mellan högnivåspråket och bytekoden vara sådan så det är bakåtkompatibelt. Eller?

Jag menar om vi tar ett helt kompilerande språk som tex C++, där går ju också utvecklingen framåt så klart och nya saker tillkommer. Eftersom det görs om till maskinkod, det finns ingen interpretenator, så måste det ju vara fritt fram att använda alla nymodigheter, eller hur?

Så hur är det då med Java som både är kompilerande och interpretenerande?

leifenMedlem sedan juli 200173 inlägg
#2

Nope, det kommer inte att fungera. Java görs ju inte om till maskinkod.

The_HulkMedlem sedan juni 20031 837 inlägg
#3

Om du använder något från 1.5 som inte finns med i 1.4 så kommer det inte att fungera på 1.4

spangoMedlem sedan juni 20008 205 inlägg
#4

Re: Java - ny kod på gammal JRE?

hema80 skrev:

Jag menar om vi tar ett helt kompilerande språk som tex C++, där går ju också utvecklingen framåt så klart och nya saker tillkommer. Eftersom det görs om till maskinkod, det finns ingen interpretenator, så måste det ju vara fritt fram att använda alla nymodigheter, eller hur?

Nja. Egentligen är C++ och andra språk som genererar nativekod ännu kinkigare än interpreterade språk eller mellanting som Java. Skillnaden är att man i C++ kan baka in mycket i själva programfilerna som brukar finnas i runtimemiljön. När så en del ändras, kompileras alla delar som beror av den om, och allt är frid och fröjd. Å andra sidan är det fullt möjligt (och i vissa avseenden bättre) att använda "runtimekomponenter" även i nativeprogram (som com-objekt i Windows). Ändras sådana komponenter kan man drabbas av versionsfel, av naturliga skäl.

LimeMedlem sedan sep. 2001961 inlägg
#5

Re: Java - ny kod på gammal JRE?

hema80 skrev:

Men java då? Om jag använder något som är nytt för Java SDK 1.5, tex scanner-classen, kompilerar (till bytekod) och ger till någon med JRE 1.4. Kommer det fungera då? Man tycker ju att eftersom Java är delvis ett kompilerenade språk så borde översättningen mellan högnivåspråket och bytekoden vara sådan så det är bakåtkompatibelt. Eller?

Men det är helt bakåtkompatibelt. Jag kan köra alla Java 1.4-program på en Java5- runtime engine. Tror du rör ihop det här med bakåtkompabilitet... Bakåtkompabilitet betyder att man kan köra gamla saker på det nya, inte att man kan köra nya saker på det gamla.

hema80 skrev:

Jag menar om vi tar ett helt kompilerande språk som tex C++, där går ju också utvecklingen framåt så klart och nya saker tillkommer. Eftersom det görs om till maskinkod, det finns ingen interpretenator, så måste det ju vara fritt fram att använda alla nymodigheter, eller hur?

Så hur är det då med Java som både är kompilerande och interpretenerande?

Egentligen exakt samma. I C++ så översätts koden till maskinkod av kompilatorn. Ska du använda något som är nytt i språket behöver du en kompilator som klarar att översätta syntaxen till maskinkod. Ska du kompilera för en helt ny Fönster-version eller en ny processor så behöver du en kompilator som funkar för den miljön.

Skillnaden med java är bara att man översätter till ett universellt bytekod-format som i sin tur görs om till maskinkod av JRE:n.

.NET (FY MIG!!!) funkar på samma sätt... om man skriver i C# (Fy mig igen), kompilerar till .NET-bytekod och gör reverse till J# för att sedan kompilera den filen till .NET-bytekod så blir de identiska...

128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)