FredrikCA skrev 2012-04-22 15:37:38 följande:
Visst designfel
1. Har du redan pekat ut själv, Google har ingen kontroll över drivrutins implementationen som dessutom körs i kernelmode, En bug här krashar hela systemet. Andra platformar som har liknande ansvar på tillverkaren har en certifieringsprocess (Symbian, Windows tex).
Felen kan inte beskyllas på google, Men att google var korkade nog att inte lägga detta underkontroll är deras eget fel- så indirekt är dom ansvariga.
2. Inte förrän gingerbread började man fokusera på GUIt, GUI designen och dess implementation är inte speciellt genomtänkt alls.
3. Användandet av en virtuell maskin (dalvikvm) direkt olämpligt för en platform som har begränsade resurser, Original tanken var naturligtvis att man inte skulle låsa sig till en processorarchitektur, Men det finns inget som konkurrerar med ARM, Kombinationen av att android inte är ett realtidsystem och att dalvik introducerar extra overhead orsakar stora problem på många sätt, Android har väldiga latensproblem överlag, Audio, Touch, Media uppspelning osv är alla drabbade av svåra latenssvårigheter- Det är ingen slump att det knappt finns några interaktiva musikapplikationer till android (Som det finns en hel uppsjö till iphone).
Extra ironiskt är det för att kunna nå hög prestanda är du tvungen att programmera nativt- Nativkodsprogrammering i android innebär att du måste göra typ "JNI" anrop dvs du måste kontext switcha utifrån dalvik till nativkoden, och tillbaka igen när du gör android api anrop (Men detta är transparent för programmeraren eftersom anropen har exponerade C trampoliner) inte nog med att du får mer overhead av detta, Du binder dig till en architektur när du programmerar nativt och den enda funktionen dalvik har är att agera bromskloss- Iprincip samtliga mer avancerade än "temperatur konverter" program är tvungna att använda nativkod för att nå en acceptabel prestanda nivå.
4. Valet att använda java som programmeringsspråk var lika dumt som naivt, Man trodde att det skulle göra det lätt för oerfarna programmerare att skriva för systemet men tänkte sig inte för alls då för det första inte java har någon manuell minneshantering (och eftersom du inte kan kontrollera när VMen gör en garbage collect så kan det hända vid ett olämpligt tillfälle och orsakar yttligare latens), Java är dessutom designat för en stackmaskin- På google insåg man ganska snabbt att en tolkad stack vm skulle fungera skit på dom (RISC) processorer som faktiskt användes (ARM processorer) och valde göra det till en register maskin istället eftersom ARM i synnerhet (Men RISC överlag) inte har hårdvarustack så minimeras minnesoperationer- Prestandan blev bättre men inte på långavägar i närhet att kunna mäta sig med nativkod, Nästa försök gjordes med android 2.2 då man introducerade JIT - Alltså körtidsrekompilering av koden och på så sätt tarbort en del av overheadet men JITen visade sig vara ineffektiv på äldre och främst minnesbegränsade platformar, Detta är anledningen många av dom tidigare modellerna HTC Hero osv stannade på 2.1, JIT ökar minnesanvändningen enormt- JITningen tar dessutom tid, Men detta löste man genom att spara JITad kod i ett cache bibliotek så JITningen är faktiskt inte enbart JIT utan även prekompilering egentligen- Det är främsta anledningen det tar väldigt lång tid att starta android när man gjort en uppgradering.
Och inte minst så var valet av programmeringspråk korkat eftersom det man effektivt gjorde egentligen var att stjäla Java Me från Sun (Numera Oracle) och försöka komma runt patentet genom att implementera sin egen icke java kompatibla VM (Därför måste class bytecode processas med dx verktyget)- Oracle jagar Google med blåslampa och google har fått panik och köpt iprincip allt dom kan i patentväg för att försöka ha någon hållhake eller kunna crosslicensiera.
Jag skulle kunna fylla på med många fler argument, Men anledningen till att android är populärt bland tillverkare är inte att systemet är väldesignat eller bra, utan för att det är iprincip gratis att licensiera.
Argumentera gärna där det finns fler tekniskt intresserade. Då kan det bli mycket intressant.
"Men anledningen till att android är populärt bland tillverkare är inte att systemet är väldesignat eller bra, utan för att det är iprincip gratis att licensiera."
Hur kommer du fram till det? Man väljer ett system som är dåligt designat och inte bra för att det är gratis att licensiera? Det låter väldigt dumt ur tillverkarsynpunkt. Varför tror du att Android är så poppis idag? För att det inte funkar?