Sida 1 av 3
Varför så få riktiga Java-program?
Postat: 6 september 2008, 18:26:05
av jesse
Java lanserades ju som det "plattformsoberoende" språket där man skulle kunna ladda ner och köra samma programfil på vilken dator som helst. Verkade ju otroligt praktiskt då Win-versionerna avlöser varandra och fler och fler kör en uppsjö av olika Linuxdistributioner.
Men ändå se jag nästan aldrig att en applikation är skriven i Java.
Varför är det så?
Vad finns det för nackdelar med Java som gjort att det bara blivit ett applet-språk för browsrar?
långsamt? buggar? krångligt? annat?
Själv hade jag tänkt lära mig lite mer om java för att kunna skriva program utan att behöva tänka på vilken dator jag ska köra på sedan.
EDIT:
finns det särskilda portaler där man kan ladda ner färdiga java-program?
De få javaprogram jag stött på har sällan fungerat bra (knappar i fönster blinkar, delar av fönster ritas upp fel, muspekaren försvinner, kraschar och/eller tar upp enorma mängder minne och processortid trots att programmet inte gör något, så är det verkligen något att satsa på eller är det ett dött projekt?
Postat: 6 september 2008, 18:31:27
av blueint
Program skirvna i C går alltid fortare.
Inlåsning av Sun Microsystems.
Sabotage av Microsoft mha inkompatibla körningsmiljöer.
Tröghet hos utvecklare.
Postat: 6 september 2008, 18:50:35
av AndLi
Det finns företag som använder java, jag sitter på ett uppdrag hos en som har sin serverprogramvara skriven i 100% java. De använder dock nästan uteslutande windows, lär finnas någon linux version.
Troligen handlar det om att det kostar för mycket att supporta olika plattformar, det ska ju testas på alla för att säkerställa funktion.
Däremot verkar java mycket populärt på mobiltelefon applikationsfronten
Många projekt idag är skrivna så man kan kompilera dem både för win och linux. Smidigt och gör inte java så nödvändigt.
Själv kodar jag embedded i C....
Postat: 6 september 2008, 19:10:17
av Icecap
Om det är skrivit i C eller Java har knappast betydelse, vad som har betydelse är att Java, som du beskriver användandet, är ett interpeterat språk. detta betyder att exekveringshastigheten är låg jämförd med ett kompilerat språk som ger en EXE-fil.
Skriver man i Java och kompilerar till en EXE-fil får man samma exekveringshastighet som ett kompilerat C-program.
Jag har sedan hört från en "frälst" Java-programmör att friheten är långt mindre, detta på gott och ont. Den frihet man har i C är trevlig... men fel använd kan den orsaka MÅNGA problem, den begränsning som finns i Java kan vara besvärlig... men den kan säkert hindra en hel del fel.
Men Java i betydelsen "samma fil kan köras på olika datorsystem" är "långsam" och mycket begränsat i vad det kan utföra, därav det svala intresse.
Postat: 6 september 2008, 19:47:02
av PHermansson
Främst är det väl prestandan som varit begränsande, och även om det blivit bättre finns ryktet kvar. Samma med inlåsningen, sedan maj 2007 finns den GPL-licensierade OpenJDK.
Postat: 6 september 2008, 21:30:23
av jesse
Jo, det verkar dödens krångligt så fort det blir lite komplexitet.
OpenJDK var ju intressant. SKa jag kolla upp.
Postat: 6 september 2008, 22:14:22
av sodjan
> Vad finns det för nackdelar med Java som gjort att det bara blivit ett applet-språk för browsrar?
Har det ? Säkert att du inte menar Javascript ?
> Främst är det väl prestandan som varit begränsande, och även om det blivit bättre finns ryktet kvar.
Tja, det är möjligt att det inte syns så tydligt på ett 3 GHz system med 1 användare.

Men jag tror nog inte att det enbart är ett rykte...
Jag har kört ett par applikationer skrivna i Java (så vitt jag förstår),
t.ex NetBeans och SoapUAI, och visst märker man en viss "seghet"
när menyer ska öppnas o.s.v. På en 1.8 GHz laptop i detta fall.
EDIT: Ändrat ett "Mega" till ett "Giga"...

Postat: 6 september 2008, 22:22:52
av Borre
> en viss "seghet" när menyer ska öppnas o.s.v. På en 1.8
Mhz laptop i detta fall.
Det kan jag tro

Postat: 7 september 2008, 01:54:23
av kimmen
Om jag inte minns fel är Azureus skrivet i java.
Postat: 7 september 2008, 07:37:56
av Icecap
Nu är det kanske på tid att dela upp begreppen lite:
Java är ett programmeringsspråk som är väl dokumenterat osv.
När man har skrivit klart programmet (blir man någonsin klar med ett program?) kompileras källkoden och DÄR skiljer det sig, det kan kompileras till antingen "maskinkod" precis som ett C-program blir, alltså skapa en "riktig" EXE-fil.
MEN det kan även kompileras till en "token-kod" som kan köras av alla Java-stödjande datorer, denna token-kod är alltså interpeterat (alltså översatt) eftersom den kör vilket ger "dåliga" prestanda. Efter vad jag vet kan man packa ihop översättaren med tokenkoden och få en enda EXE-fil men likaväl är den översatt "on the run".
Och det som efterfrågas är varför den kod som kan köras på alla system inte har blivit mer populär och det är svaret: det är för trögt.
Postat: 7 september 2008, 10:42:35
av AAVE
Att java skulle vara långsam är skitsnack.
Ladda ner spelet "Galaxy on Fire" till mobilen och se vad Java klarar av idag (och det spelet är 3-4 år gammal).
EDIT:
Java är INTE interpeterat. Java kan kompileras till "byte code" för JIT omkompilering eller direkt till EXE.
Postat: 7 september 2008, 10:58:17
av $tiff
På LTH kör man hårt med Java (kan bero på att de har toppforskning i området). Språket är i sig smidig för högnivåapplikationer, eftersom det är begränsat och därför ger dumma studenter nedsatt förmåga att totalt stöka till det med pekare och annat klurigt.

Ett bra exempel är att kurser i realtidsprogrammering ges i Java, och då kan man flytta fokus från krångliga realtidskärnor till de mer centrala; användandet av semaforer, blockerande händelser och köer. Allt utan att använda en enda funktionspekare!
Postat: 7 september 2008, 11:36:52
av Icecap
AAVE: Java-program där samma fil som kan köras på olika plattformar ÄR interpeterat! Så enkelt är det!
Men att Javaprogram kan kompileras till bytekode på samma sätt som C osv. skrev jag ju också eller hur? Men då ska det kompileras till den enskilde plattform (PC/MAC/whatever) och då kan man INTE köra PC-filen på en MAC!
Och interpeteringen GER långsammare program!
Postat: 7 september 2008, 11:45:37
av ahlsten
Icecap: det känns som att du glömmer hela historien med virtuella maskiner, som java bygger på.
Postat: 7 september 2008, 11:52:20
av sodjan
> Ladda ner spelet "Galaxy on Fire" till mobilen...
Jag förstår inte vad en mobil har med detta att göra.
> Java-program där samma fil som kan köras på olika plattformar ÄR interpeterat! Så enkelt är det!
Och det är bytecod som interpreteras av en virtual machine.
Bytecode är plattformsoberoende (i teorin...).
Och det är interpreteringen av bytecode som utgör prestandaproblemet.
Eller problem och problem, det beror naturligstvis på. I större fleranvändarsystem
är risken också större för att det blir ett problem.
> Men att Javaprogram kan kompileras till bytekode på samma sätt som C
> osv. skrev jag ju också eller hur?
Det är bytecode som compileras till native code för en specific plattform.
Inga normala språk compileras till bytecode. Det som ligger närmast idag
är t.ex .NET miljön.