Programování pro staré Sony Ericssony a další staré telefony

Zdravim,

mohl by se prosím někdo, kdo má zkušenosti s programováním pro staré telefony, ideálně Sony Ericssony (K750 a podobné) podělit o tom, jak se pro ně vyvíjí programy? Já jsem se k programování dostal bohužel až po příchodu Androidu a nikde jsem nedokázal najít nějaké relevantní informace o programování pro staré telefony.
Jediné, co jsem dohledal je, že se programují v Javě, konkrétně J2ME a že je potřeba SDK pro konkrétní model. Na vývojářském webu Sony už ale žádná SDK pro staré telefony nemají, jsou tam jenom vývojářské nástroje pro Androidy.

Nejvíc mě zaráží, že jsem nikde nenašel ty nejdůležitější informace jako jakou HW architekturu má konkrétní model.

Programuju primárně v C, C++, Pythonu. S Javou nemám žádné zkušenosti.

Děkuji a hezký víkend.


ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:Programování pro staré Sony Ericssony a další staré telefony
« Odpověď #1 kdy: 15. 06. 2019, 12:55:24 »
já jsem v tomto naprostej greenhorn, ale osobně bych se zkusil podívat na ERLANG, to byl ericsoní jazyk,
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Programování pro staré Sony Ericssony a další staré telefony
« Odpověď #2 kdy: 15. 06. 2019, 13:05:24 »
Jediné, co jsem dohledal je, že se programují v Javě, konkrétně J2ME a že je potřeba SDK pro konkrétní model.

Pokud nechceš využívat speciální vlastnosti daného modelu, tak tohle není potřeba a chceš vyrobit obecnou MIDP aplikaci. Ale jak se to dělá také nevím, nikdy jsem to nedělal. Zkusil bych se inspirovat třeba u https://github.com/GuntherDW/midpssh

Nejvíc mě zaráží, že jsem nikde nenašel ty nejdůležitější informace jako jakou HW architekturu má konkrétní model.

To by tě nemělo zajímat, protože nevyrábíš nativní kód, ale Java bajtkód.

já jsem v tomto naprostej greenhorn, ale osobně bych se zkusil podívat na ERLANG, to byl ericsoní jazyk,

Ano, ale pro telefonní ústředny, nikoli pro mobily…

RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:Programování pro staré Sony Ericssony a další staré telefony
« Odpověď #3 kdy: 15. 06. 2019, 13:09:05 »
Zde mas ukazku:
http://randomconsultant.blogspot.com/2008/07/creating-j2me-app-with-eclipseme-and.html

SDK stahnes napr. ze SoftPedie a verim ze i dalsi komponenty se budou nekde valet po tech Internetech:
https://www.softpedia.com/get/Programming/SDK-DDK/Sony-Ericsson-SDK.shtml

Re:Programování pro staré Sony Ericssony a další staré telefony
« Odpověď #4 kdy: 15. 06. 2019, 13:09:52 »
Důvod, proč se to programovalo v J2ME, byl právě ten, že pak aplikace byly nezávislé na hardwarové architektuře. Přizpůsobení pro jednotlivé modely spočívalo „jenom“ v tom co který model podporoval a jak přesně se choval, ale hw architekturu už jste neřešil. To SDK poskytovalo rozhraní pro ten konkrétní model – samotné J2ME toho moc neumělo, takže SDK poskytovalo přístup k dalším funkcím telefonu, pro které nemělo J2ME odpovídající API. Reálně tedy aplikace byly obvykle určené pro konkrétní typ telefonu, ale aplikace pro různé modely mohly mít významnou část kódu společnou.

Erlang s tím nemá nic společného, to byl jazyk pro programování síťových komponent (ústředny a tak).

Pokud nechceš využívat speciální vlastnosti daného modelu, tak tohle není potřeba a chceš vyrobit obecnou MIDP aplikaci.
Pro velmi jednoduchou aplikaci by to stačilo, ale služby, po které bylo v J2ME rozhraní, byly dost omezené, a obvykle telefon ani nepodporoval vše. Často se i stávalo, že pro něco bylo v J2ME rozhraní, ale telefon ve svém SDK měl jiné rozhraní – někdy pro to, že telefon uměl něco, co pomocí J2ME rozhraní nešlo vyjádřit, někdy to vypadalo, že se vývojářům prostě jen nechtělo implementovat to J2ME rozhraní, tak si to udělali po svém.


BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Programování pro staré Sony Ericssony a další staré telefony
« Odpověď #5 kdy: 15. 06. 2019, 14:06:19 »
Zdravim,

mohl by se prosím někdo, kdo má zkušenosti s programováním pro staré telefony, ideálně Sony Ericssony (K750 a podobné) podělit o tom, jak se pro ně vyvíjí programy?

Stáhl sis SDKáčko s podporou pro J2EM (javax.microedition.*). Pak emulátor toho kterého telefonu (já třeba měl Motorolu). Pak sis musel nastavit profil, kterým jsi tak nějak říkal tomu telefonu co od něj chceš. Většina těch telefonů to stejně ignorovala, ale což.

Programoval jsi normálně na PC, v klasickém IDE, všechno fungovalo stejně. Jen jsi měl omezené knihovní prostředky. A myslet na výkon. Vygeneroval sis jarko a jadko, a to si poslal do telefonu. Někdy to šlo kabelem, u některých telefonů jsem to musel stahovat oklikou přes internet.

Re:Programování pro staré Sony Ericssony a další staré telefony
« Odpověď #6 kdy: 15. 06. 2019, 19:06:45 »
Ja uplne chapu co chces, taky jsem toho nazoru ze ty stare Ericssony jednou vstanou znovu z popela. Ted je prave dobre se ucit pro ne programovat v J2ME, je to investice do budoucna. Kdo to bude umet, bude vysmaty az do duchodu.

PS: mas sklapecku nebo ten  s dlouhou antenkou?

Re:Programování pro staré Sony Ericssony a další staré telefony
« Odpověď #7 kdy: 15. 06. 2019, 23:26:02 »
Zde mas ukazku:
http://randomconsultant.blogspot.com/2008/07/creating-j2me-app-with-eclipseme-and.html

SDK stahnes napr. ze SoftPedie a verim ze i dalsi komponenty se budou nekde valet po tech Internetech:
https://www.softpedia.com/get/Programming/SDK-DDK/Sony-Ericsson-SDK.shtml
tohle je zajímavé, díky

Ja uplne chapu co chces, taky jsem toho nazoru ze ty stare Ericssony jednou vstanou znovu z popela. Ted je prave dobre se ucit pro ne programovat v J2ME, je to investice do budoucna. Kdo to bude umet, bude vysmaty az do duchodu.

PS: mas sklapecku nebo ten  s dlouhou antenkou?
Já to, alespoň prozatím, beru jako hračku. Chtěl bych udělat třeba jednoduchý program, který by využíval IrDA.
Mám 2 kousky - K750 a K800, oba už mají anténu integrovanou.


Je možné pro ně programovat i v něčem jiném než v Jave? Třeba C?

Re:Programování pro staré Sony Ericssony a další staré telefony
« Odpověď #8 kdy: 18. 06. 2019, 09:58:52 »
Je možné programovat v čemkoli, co

1. Přeložíte do příslušného bytecode. To odpovídá bytecode z Javy 1.3 (přesněji bytecode verze 47.0), plus je nutné splnit další specifické požadavky (nepoužití instrukcí JSR a RET + StackMap), které zjednodušují práci JVM (teda vlastně KVM). Tyto další požadavky lze ale splnit celkem snadno – běžně se generuje bytecode nesplňující tyto požadavky, a následně se nástrojem preverify upravuje, aby je splňoval.
2. Použije správnou standardní knihovnu (MIDP+CLDC).

Teoreticky lze použít i novější verzi jazyka Java a následně nástroji jako Retrotranslator a případně snad k tomu i Retrolambda to přeložit do 1.3. To ale prakticky nemusí být až takový přínos – stejně potřebujete použít standardní knihovnu pro MIDP+CLDC, která například v kolekcích určitě nepoužívá generika.

Použití jiných jazyků než Java tak teoreticky možné je, s trochou snahy dokonce i pokud generují novější bytecode. V praxi ale můžete snadno narazit:

* Kompilátor automaticky použije třídy/metody, které nemá v MIDP+CLDC k dispozici. To se dost možná stane u dynamických jazyků jako Groovy nebo Clojure, protože nemáte k dispozici reflexi.
* Jazyk vyžaduje dodatečnou standardní knihovnu, která nemusí být plně kompatibilní.
* Formálně se dostanete ke kódu, který splňuje standardy, ale kvůli kompilátoru generujícímu obrovský kód (zkusil jsem si disassemblovat Hello World v Groovy++) nebo standardní knihovně dostanete JAR v řádu jednotek nebo desítek MiB. Je otázkou, jak si s tím poradí který telefon.
* Nebo se můžete dostat k funkčnímu, ale pomalému kódu. I když, to spíš nebude fungovat vůbec, protože to shoří na reflexi.

Částečně zde může pomoci ProGuard, který umí mimo jiné prořezat nepotřebný kód, ale taky nezvládne všechno. V praxi se IMHO snadno můžete dostat do situace, kdy u jednoduché aplikace strávíte více času laděním buildovacího procesu, než kolik ušetříte použitím příjemnějšího jazyka.

Jediný jiný jazyk, o kterém vím, že by teoreticky měl být tady celkem použitelný, je Mirah, který se snaží být staticky typovaným Ruby pro JVM. Nemá vlastní standardní knihovnu a má se kompilovat prý celkem přímočaře. Moc se nevyvíjí, ale na to se u programování v J2ME asi moc nehraje…

Nemůžete ale použít nativní kód ani nativní pointerovou aritmetiku. Cčko je asi prakticky mimo hru. I kdybychom měli kompilátor C do class souborů, jsou tu praktické problémy. Co s pointerovou aritmetikou? Ano, dá se udělat jedno velké pole, v rámci kterého simulujete pointerovou aritmetiku, něco podobného AFAIR dělá pro JS nástroj Emscripten. Tím ale ztratíte výkon (narozdíl od JS tu pro to není speciální podpora v JVM) a zkomplikujete interoperabilitu se standardní knihovnou, kterou potřebujete použít na UI apod. Pro aplikace psané na zelené louce to tedy nemá moc smysl. Nebo je možné C (nebo spíše C++) trošku uzpůsobit podmínkám a používat Javové třídy jako java.lang.String (namíšto std::string nebo char*). Pak ale celkem nevyhnutelně skončíte u jazyka prakticky dost podobného Javě, protože Java staví na Cčkové syntaxi. S trochou nadsázky tento jazyk C++4J může mít transpiler do Javy napsaný v Bashi pomocí sedu.

creatura

Re:Programování pro staré Sony Ericssony a další staré telefony
« Odpověď #9 kdy: 24. 06. 2019, 21:16:23 »
Ja uplne chapu co chces, taky jsem toho nazoru ze ty stare Ericssony jednou vstanou znovu z popela.
Přesně můj názor. Kdy si konečně lidi uvědomí, že mnohem lepší je tahat kompakt na focení, mít v autě navigaci, koupit si papírové mapy, psát dopisy a na internet chodit do internetových kaváren ... pak bude s módou smartphone konec a lidi co to chápou už dnes budoh připravení.