Microsoft omskriver Minecraft fra Java til C++ til skolebrug

En ny udgave af spillet Minecraft skal være beregnet til skolebrug, og Microsoft har valgt at omskrive spillet i C++.

Skolelærere skal kunne bruge det populære spil Minecraft til undervisningsbrug, og derfor er Microsoft nu på vej med en ny udgave, der er beregnet specifikt til skolebrug. Det skriver ZDNet.

Skoleudgaven bygger på erfaringerne fra MinecraftEDU, som Microsoft har købt fra finske TeacherGaming. Men til sommer kommer en ny udgave, som Microsoft er ved at omskrive i C++.

Minecraft er i dag skrevet i Java, men efter Microsoft har overtaget Mojang, der står bag Minecraft, er der også kommet en Pocket Edition og derefter en Windows 10-udgave, som er skrevet i C++.

Med valget af C++ til skoleudgaven kan det se ud til, at fremtiden for Minecraft ligger i C++ snarere end i Java.

Java til spilprogrammering giver skepsis

Det er en tilbagevendende diskussion, hvorvidt Java er velegnet til alle former for spilprogrammering, hvor blandt andet garbage collection i Java bliver beskyldt for at føre til mærkbare ydelsesproblemer, også i den nuværende udgave af Minecraft. Det dukker eksempelvis op i diskussionen af nyheden på Reddit.

Et andet svar kan dog også være, at C++ giver bedre mulighed for at udnytte de nyeste udgaver af OpenGL og DirectX, så grafikprocessorerne kan trække en større del af læsset.

Til gengæld vil et skift til C++ betyde, at de tilføjelser og modifikationer, der er skrevet i Java, ikke vil kunne anvendes med den nye version.

Den nye skoleudgave har som minimumskrav listet et DirectX 9-kompatibelt grafikkort, men Windows er ikke specifikt nævnt som et krav. Den nye udgave vil adskille sig fra almindelig Minecraft med flere muligheder for administration af brugere på serveren, samt ved at have flere redskaber specifikt til brug ved klasseundervisning.

Kommentarer (13)

Michael Aggerholm

Det fede ved MineCraft er netop at det er skrevet Java og derfor kører på stort set alle platforme. Det har også gjort det meget let at portere til mobile devices (PocketMine) som er meget udbredt til bl.a. Android.

Der er ingen grafikproblemer overhovedet i Minecraft. Der er ingen problemer med Garbage Collection. Det faktum at man i C++ selv er ansvarlig for garbage collection betyder ikke at man kan gøre det mere effektivt. Det medfører blot en øget risiko for memory leaks hvilket er en problemstilling jeg ikke kan se skulle være at foretrække over absolut minimale (ikke eksisterende) forstyrrelser forårsaget af en automatisk garbage collector. Man udskifter blot en problemstilling med en anden.

Det er også svært at finde et godt argument for at C++ på en eller anden måde er mere egnet til undervisningsbrug end Java. Det kunne være rart at høre argumentet herfor.

Det her ligner et strategisk valg der er baseret på en anden agenda. Det er i hvert fald en nærliggende tanke når man hører argumentationen fra Microsoft.

IMO.

Martin Kristiansen

Det faktum at man i C++ selv er ansvarlig for garbage collection betyder ikke at man kan gøre det mere effektivt.

Det faktum at temporære objekter bliver allokeret på stakken, istedet for på heap, - og automatisk deallokeret betyder at C++ er langt mere effektivt end Java.

I C++11 har compileren yderligere gode muligheder for helt at eliminere allokering/deallokering af temporære objekter vha. inlining og move-constructorer.

Morten Christiansen

Microsoft ikke kan holde fingrene fra andre udviklers arbejde og skal blande sig i standard og afvikling, så man oplever programmer ikke fungere efter hensigten eller ens driver til grafikkort bliver blokkeret og melder fejl af på grund af windows.

Det faktum er at microsoft ikke engang kan programmere deres egen styresystem ordenligt, og det faktum er at microsoft programering i GTA IV har udviklet en besværlig process i at installere spillet ordenligt og (game for windows live) fucker det mest op i forhold til steam og origen.

Baldur Norddahl

Det faktum at temporære objekter bliver allokeret på stakken, istedet for på heap, - og automatisk deallokeret betyder at C++ er langt mere effektivt end Java.

Moderne Java laver escape analyse og allokerer objekter med kort levetid på stakken hvor det er muligt.

En copying garbage collector, oftest brugt til første generation objekter, er desuden lige så hurtigt til at deallokere som stak metoden - den bruger nemlig 0 CPU cykler på det.

Johnnie Hougaard Nielsen

Når Microsoft føler trang til omlægning (forhåbentlig ikke med tilsvarende problemer som dengang de omskrev Hotmail til deres egen infrastruktur), havde det været mere logisk med C#, bl.a. fordi det til dels fremstår som en fork af Java.

Frithiof Jensen

Nu er Minecraft grafikmässigt et meget enkelt spil, fomodentligt er det ikke så afgörende hvor "effektivt" spillet afvikles i forhold til at forsikre sig imod at blive sagsögt for et eller andet af Oracle?

Til gengæld vil et skift til C++ betyde, at de tilføjelser og modifikationer, der er skrevet i Java, ikke vil kunne anvendes med den nye version.

Det synes jeg til gengäld er en rigtig dårlig beslutning. Minecraft er blevet enormt fordi - udover at det er et godt spil - at "alle" kunne köre det "overalt" og "pille" ved det. Man burde kunne supportere det eksisterende API selv om man nu bruger C++ - eller lave et nyt som alle kan bruge. Gode mods er essentielle for holde et spil "i live".

Hvis planen er at man i fremtiden kun kan hente godkendte mods fra Microsoft Store, så lider Minecraft desvärre den samme skäbne som resten af udbuddet fra Microsoft Store :p

Niels Henriksen

Netop da det kom frem at Microsoft købte Mojang gik der rygter i modding-miljøet at hvis de vil lave det om fra Java så vil der komme en klon af Minecraft i Java for at kunne bibeholde mods. Der er ikke fra Mojang et API men der er lavet et hvor de har dekompileret Java koden og omdøbt alle funktionskald fordi det er ulæseligt når det er dekompileret.

Men gør Microsoft det ordentligt så kigger de på det modding miljø og implementerer ikke mods men et ordentligt API.

Jeg sidder selv og er ved at lave mods og syntes at det er sjovt og spændende men jeg vil nok hellere have haft at de brugte C# end C++.

Jan Rasmussen

Det er også svært at finde et godt argument for at C++ på en eller anden måde er mere egnet til undervisningsbrug end Java. Det kunne være rart at høre argumentet herfor.

Kan man downloade en Java compiler der ikke gør brug af en privat firmas runtime ?

Fra http://www.java-made-easy.com/free-java-compiler.html
"No matter what compiler you get, you'll need the JRE (Java Runtime Environment). If you don't have the JRE, you may download it at Java.com."

Overgang til C++ passer fint med de observationer jeg har gjort mig ved at se rigtig mange CppCon video'er, alle(Facebook, Apple, Google, Microsoft) er ved at skrotte deres ineffektive kode og gå over til C++ som ikke ejes af ét firma.

Der ser ikke ud til at være småting der kan spares når man kommer op i datacenter strøelse.

Der ser også ud til at strømforbrug, CO2 udledning o.s.v. har højere prioritet ind programmørernes 'world modeling' som er ved at koste for meget., og er på kollisions kurs med den måde CPU's er indrettet på.

Provokerende video ?
https://www.youtube.com/watch?v=rX0ItVEVjHc
CppCon 2014: Mike Acton "Data-Oriented Design and C++"

I'm nobody så ovenstående er blot hvad en IT interesseret hobbyprogrammør fik ud af at se CppCon14/15

Michael Aggerholm

Det er fløjtende ligegyldigt hvor objekter bliver allokeret, det har højest noget at sige i forhold til om du ender med at løbe tør for memory eller ej. Du er godt klar over at stack allokering er langt mere effektiv end heap allokering, ikke?

Det er også helt almindelig god practice at man ikke sviner med objekter i Java, eksempelvis ved at benytte sig af .valueOf() på primitive wrappers. Jeg vil gætte på at for hver "teknik" eller "feature" du kan nævne i C++ der angiveligt reducerer memory eller forbedrer performance, så kan jeg give dig noget tilsvarende i Java. Der er i praksis kun ganske få typer applikationer der reelt har gavn af en C++ implementering vs. en Java ditto.

Faktum er, for nu at bruge din terminologi, at Java er en torn i siden på Microsoft, og derfor er det meget let for dem at få øje på en masse ulemper ved sproget. Men med skiftet til C++ står jeg nu med en Ubuntu der ikke længere uden videre kan køre Minecraft. Hverken langsomt eller hurtigt. Med eller uden heap allokering. Jeg kan bare kigge i postkassen efter den Windows pc jeg så er nødt til at bestille. Det synes jeg ikke er en positiv udvikling.

Michael Aggerholm

Ja du kan downloade OpenJDK som har bidrag fra en række virksomheder og individer.

Det er noget af en påstand at Java er "ineffektiv". Du kan få bedre performance ud af C++ på samme måde som du kan få endnu bedre performance hvis du skriver i assembler, men det har jo også sine omkostninger at gøre dette. Hvis jeg ville skrive en beregningstung applikation (simulering, kryptovaluta osv) ville C++ være et naturligt valg fordi C++ ender som native code hvilket bytecode jo ikke er - ikke helt. Men hvis du vedligeholder en stor web applikation så er det helt naturligt at vælge noget der kan afvikles på en JVM.

I forhold til drift kan du få din Java app op i skyen for $5 om måneden, eksempelvis via DigitalOcean og utallige andre leverandører. Drift er billigt i dag.

Ivo Santos

Java / C++ / C# eller andet sprog??..

Provokerende video ?
https://www.youtube.com/watch?v=rX0ItVEVjHc
CppCon 2014: Mike Acton "Data-Oriented Design and C++"

Da jeg læste følgende indlæg om Data orienterede design i C++ kom jeg til at tænke på en video på Youtube som jeg stødte ind i for et par måneder siden, den pågældende video handler om processor cache og til dels om programmer med flere tråde, og er en video som bør ses.

code::dive conference 2014 - Scott Meyers: Cpu Caches and Why You Care
https://www.youtube.com/watch?v=WDIkqP4JbkE

Jan Rasmussen

Det er noget af en påstand at Java er "ineffektiv".

Det var nu mere et overordnet indtryk af alle sprog der ikke er 'close to the metal'

Google: Java is faster then C++ ( in some cases) De første 10 min slå tonen an.
https://www.youtube.com/watch?v=fHNmRkzxHWs
CppCon 2014: Chandler Carruth "Efficiency with Algorithms, Performance with Data Structures"

Det ser ud til at Facebook var programmeret i PHP og Andrei Alexandrescu har opnået store ydelses forbedringer ved at omskrive det til C++
Jeg tror det er i denne her:
https://youtu.be/MvFj8qo1iuA?list=PLwIHK2uxMxq3mwQ-OPkla_wIb250eiNJ6

OpenJDK :

According to free-software advocate Richard Stallman, this would end the "Java trap", the vendor lock-in that he argues applied to Java and programs written in Java.

Tak, der ser ud til at være værd at kigge nærmere på hvis det kan lukke munden på "selveste" Mr. Stallman.

Morten Svendsen

Minimumskravene er blandt andet "DirectX 9 graphics device with WDDM 1.0". Så nej den nye version vil ikke kunne kører på din Mac eller Linux PC.
Det er det samme når Microsoft gratis forære Visio, Office og Windows til skoler og universiteter. Når man så kommer ud i arbejdsmarkedet, stifter firma og køber it til privaten ja så er det produkterne fra Microsoft man vælger. Det er jo dem man hidtil har brugt og alternativerne kender man ikke.

Log ind eller opret en konto for at skrive kommentarer

JobfinderJob i it-branchen