Gå til innhold

Endelig har Java fått en overhaling


Anbefalte innlegg

Videoannonse
Annonse

Jeg tror ikke optimalisering var i tankene hans når han lagde minecraft, det var bare ett lite prosjekt som viste seg å være en gullgruve. Men jeg er enig om at det er utrolig dårlig optimalisert og det burde i utgangspunktet aldri bli skrevet i java.

 

Ikke helt enig, man kan klare å lage slike spill helt fint i java... Men er enig i at Notch har grundig bevist at han ikke har klart det noe særlig bra.

 

Vel altså, man skal uansett ikke lage store spill i java pga bla, at java ikke støtter native multi-core, som man seff skal ha i dagens spill.

Lenke til kommentar

Vel altså, man skal uansett ikke lage store spill i java pga bla, at java ikke støtter native multi-core, som man seff skal ha i dagens spill.

 

Høres suspekt ut. Etter litt googling ser det ut som java støtter threading helt fint, så ser ikke helt hvorfor det skulle være et problem.. Har du noen referanser til det problemet?

Lenke til kommentar

Vel altså, man skal uansett ikke lage store spill i java pga bla, at java ikke støtter native multi-core, som man seff skal ha i dagens spill.

 

Høres suspekt ut. Etter litt googling ser det ut som java støtter threading helt fint, så ser ikke helt hvorfor det skulle være et problem.. Har du noen referanser til det problemet?

 

Threading != Multi-core

 

Ikke på langt nær!

Lenke til kommentar

...java ikke støtter native multi-core...

 

Native multi-core? Stusser på det uttrykket. Sikkert multi-threading du mente eller det gode gamle flertrådsprogramering.

 

Ethvert programmeringsspråk med respekt for seg selv burde støtte flere kjerner.

Lenke til kommentar

...java ikke støtter native multi-core...

 

Native multi-core? Stusser på det uttrykket. Sikkert multi-threading du mente eller det gode gamle flertrådsprogramering.

 

Ethvert programmeringsspråk med respekt for seg selv burde støtte flere kjerner.

 

Native som i Sun sin utvikling av Java, støtter IKKE multi-core, nei tråder (threads) og kjerner (cores) er ikke samme greie, jeg sa native fordi det er på GNU lisens og jeg aner ikke hva andre versjoner har.

Lenke til kommentar

Native som i Sun sin utvikling av Java, støtter IKKE multi-core, nei tråder (threads) og kjerner (cores) er ikke samme greie, jeg sa native fordi det er på GNU lisens og jeg aner ikke hva andre versjoner har.

 

Enten mener du noe annet enn det de fleste andre mener, eller så kan det virke som du tar feil her..

 

http://java.dzone.com/news/building-multi-core-ready-java

 

Hvis du ikke snakker om threads, hva snakker du om da? Noen linker eller stikkord?

 

Edit : er det noe a la det som diskuteres i http://java.dzone.com/news/java-7-ready-multicore-revolut som du mener? Isåfall er det hovedsaklig snakk om å gjøre ting enklere, ikke om det er mulig eller ei.

 

(For den saks skyld kan man starte opp en 2nd program og kommunisere via felles minne eller en nettverks socket, kommer litt an på oppgaven og data som skal utveksles. Sånn sett kan man få "multi core" støtte i alle språk)

Endret av Terrasque
Lenke til kommentar

...java ikke støtter native multi-core...

 

Native multi-core? Stusser på det uttrykket. Sikkert multi-threading du mente eller det gode gamle flertrådsprogramering.

 

Ethvert programmeringsspråk med respekt for seg selv burde støtte flere kjerner.

 

Native som i Sun sin utvikling av Java, støtter IKKE multi-core, nei tråder (threads) og kjerner (cores) er ikke samme greie, jeg sa native fordi det er på GNU lisens og jeg aner ikke hva andre versjoner har.

 

Tror du må forklare litt her.

 

Når man oppretter en tråd, så vil java gjøre den om til native tråd som OS'et sin scheduler vil kjøre på den core den finner mest hensiktsmessig.

 

Java sin JVM utnytter dine prosessorer, og core, helt greit.

 

Om du er opptatt av multi-process støtte, så har man også dette i java. Men dette er mer plunder. Men det er det unansett siden 2 prosesser ikke deler minne slik 2 tråder gjør. Så da må man inn med endel herk for å kommunisere om man vil benytte prosesser for å paralellisere oppgaver. Men også med multi-prosesser så vil OS'et sin scheduler bestemme hvilken core trådene skal gå i. (en prosess vil ha 1 til flere tråder).

 

Så hva er det du savner at Java skal gjøre??? For påstanden kan omtrent leses som at Java ikke utnytter hardwaren, noe som er fullsteding feil.

  • Liker 1
Lenke til kommentar

Spel kan fint lages med ytelse oppimot ytelsen til C. Det som er hovudgrunnen er at alle store spelrammeverk idag er skreve i c/c++ og det koster mykje tid og penger og flytte over ein grafikkmotor til eit nytt utviklingsmiljø.

 

JVM er idag superavansert og vil optimalisere koden din betre jo lengre programmet køyrer. JVM vil sjå på kode som repeterast og cacher det. Ergo det bruker meir minne, men i gjengjeld så går det mykje kjappare. JVM tar også i bruk diverse utvidelsar i CPU'en utan at utviklaren trengje å tenkte på kva slags plattformer han skal tenkja på. Idag ser ein ofte at kode skreve i C og kompilert med GCC køyrer treigare enn kode skreve i Java og kompiliert av JVM.

 

Om ytelse hadde vore 100% fokus på i spel, så hadde motorane framleis vore skreve i C og ikkje C++.

Lenke til kommentar

Native som i Sun sin utvikling av Java, støtter IKKE multi-core, nei tråder (threads) og kjerner (cores) er ikke samme greie, jeg sa native fordi det er på GNU lisens og jeg aner ikke hva andre versjoner har.

 

Enten mener du noe annet enn det de fleste andre mener, eller så kan det virke som du tar feil her..

 

http://java.dzone.com/news/building-multi-core-ready-java

 

Hvis du ikke snakker om threads, hva snakker du om da? Noen linker eller stikkord?

 

Edit : er det noe a la det som diskuteres i http://java.dzone.com/news/java-7-ready-multicore-revolut som du mener? Isåfall er det hovedsaklig snakk om å gjøre ting enklere, ikke om det er mulig eller ei.

 

(For den saks skyld kan man starte opp en 2nd program og kommunisere via felles minne eller en nettverks socket, kommer litt an på oppgaven og data som skal utveksles. Sånn sett kan man få "multi core" støtte i alle språk)

 

Da tok jeg nok feil, men jeg viste at en tidligere versjon av java ikke støttet multi-core som irriterte meg grenseløst på den tid og at både minecraft server og client ikke støtte det....

Lenke til kommentar

Da tok jeg nok feil, men jeg viste at en tidligere versjon av java ikke støttet multi-core som irriterte meg grenseløst på den tid og at både minecraft server og client ikke støtte det....

Programmer driter langt i hvor mange kjerner du har på prosessoren, det de derimot gjør, om de er litt effektive, er å fordele lasten sin over mange tråder. Deretter håndterer operativsystemet fordeling av tråder utover kjernene.

 

Java har støttet multithreading i mange mange år, minecraft benyttet derimot ikke denne muligheten i starten, og det var først når mer kompetente og erfarne programmerere ble med i gamet at disse funksjonene ble implementert.

Lenke til kommentar

På en måte er det bra at Java ikke er bakoverkompatibelt, på en annen måte ikke. Tvinger oppgradering av programvare, men samtidig skaper det en del problemer når man sitter på gammel programvare som det kan ta lang tid å få opp på ny Java, eller kanskje man aldri får det.

Endret av Nator
Lenke til kommentar

Spel kan fint lages med ytelse oppimot ytelsen til C. Det som er hovudgrunnen er at alle store spelrammeverk idag er skreve i c/c++ og det koster mykje tid og penger og flytte over ein grafikkmotor til eit nytt utviklingsmiljø.

 

JVM er idag superavansert og vil optimalisere koden din betre jo lengre programmet køyrer. JVM vil sjå på kode som repeterast og cacher det. Ergo det bruker meir minne, men i gjengjeld så går det mykje kjappare. JVM tar også i bruk diverse utvidelsar i CPU'en utan at utviklaren trengje å tenkte på kva slags plattformer han skal tenkja på. Idag ser ein ofte at kode skreve i C og kompilert med GCC køyrer treigare enn kode skreve i Java og kompiliert av JVM.

 

Om ytelse hadde vore 100% fokus på i spel, så hadde motorane framleis vore skreve i C og ikkje C++.

Java er en abstraksjon fra OS, som igjen er arbstrahert fra hardware. Det største problemet er at spill benytter direkte hardware access gjennom DirectX/OpenGL etc. Java har ingen, hvertfall ingen god løsning, på direkte hardware access for skjermkort f.eks.

 

Java har gjort flere fremstøt mot GUI, 2D, 3D, men felles for alle forsøk er at de har sugd balle. Sun, nå Oracle, er ikke akuratt kjent for å lage gode løsninger for å bygge noe som har med frontend å gjøre.

 

Derfor så benyttes Java stort sett til bedriftsystemer, og webløsninger, hvor selv .Net ikke klarer å banke Java på flere områder. De største løsningene, f.eks pensjon/skatt/finans her til lands lages med Java.

 

Da tok jeg nok feil, men jeg viste at en tidligere versjon av java ikke støttet multi-core som irriterte meg grenseløst på den tid og at både minecraft server og client ikke støtte det....

Java har støtte native-tråder, og multicore lenge. MEN utvikleren må gjøre en aktiv jobb for å fordele jobb ut i tråder.

Det å jobbe med tråder, selv i Java, er en smått forferdelig greie. Det eneste som er garantert med tråder, er at ingenting er garantert. Noe som gjør det til litt marerittaktig å teste ting. Derfor er det også så mange som lager feil når de trådprogrammerer fordi de ikke oppdager problemene før det har gått for lang tid.

 

 

På en måte er det bra at Java ikke er bakoverkompatibelt, på en annen måte ikke. Tvinger oppgradering av programvare, men samtidig skaper det en del problemer når man sitter på gammel programvare som det kan ta lang tid å få opp på ny Java, eller kanskje man aldri får det.

Java ER bakoverkompatibelt. Hva som er greia med at f.eks BankID ikke funker med Java 7, er enten bugg i Java 7, eller BBS har gjort noe "smart" noe. Skal ikke se bort i fra det.

Det er faktisk litt irriterende at Java er så sinnsvakt bakoverkompatibelt, for i dag så inneholder Java noe "gammel morro". Men det er ikke på så langt nær ille som f.eks PHP.

Lenke til kommentar

Som nevnt er Java bakoverkompatibelt, noe annet ville være det samme som å slutt å prøve å være en seriøs aktør i programvarebransjen. Det sagt er det fint mulig for et program å kalle opp funksjoner som er tilgjengelig i gamle java versjoner, men som ikke er tilgjengelige i nye versjoner (feks sun.awt.shell.ShellFolder). Disse klassene får du meldig om å ikke bruke, så en utvikler som velger å bruke disse bør da vite og ha full kontroll over hvilken JRE som blir brukt på maskinen (noe et skrivebordsprogram/applet aldri vil ha).

 

Det sagt så er det rapportert enkelte bugs med den nye JRE'n som er for aggressive på optimalisering (feks http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7070134) for enkelte litt "sære" programmer. Det er jo mulig bankid benytter et 3djeparts bibliotek som krasjer eller ikke virker korrekt.

Lenke til kommentar
BankID Norge

 

Oracle lanserer i disse dager Java versjon 7. Vi har fått inn rapporter om at denne versjonen ikke fungerer med BankID. Nets er i ferd med å feilsøke hvorfor denne ikke fungerer. I mellomtiden anbefales kundene om ikke å oppgradere til versjon 7.

 

Her er responsen fra BankID, etter jeg sendte de mail om at det ikke funket :)

Lenke til kommentar

Java har nok ingen sammenheng med hvordan grafikken i minecraft ser ut. Java støtter opengl på samme måte som alt annet. Vil tro det som tar minne og cpu i minecraft er den store verdenen og hele det systemet der som tross alt blir random generert mens du spiller, og det er nesten uendelig stort. Spillmotoren er helt anderledes designet enn f.eks verdenen i et mmorpg.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...