# j2me und mvc



## ARadauer (23. Jul 2007)

setzt ihr beim erstellen von j2me anwendungen auf das mvc pattern.
muss ehrlich sagen, ich schreib meistens j2se anwendungen und benutz eigentlich immer ein schönes mvc design, aber hier bei j2me hab ich irgendwie probleme.

mir passiert es dass mein model eigenlich nur alle aufrufe der hilfsobjekte an die view weiterreicht.

also hab ein grobes konzept, bei denen drei forms commandos entegen nehmen und einen zentralen controller aufrufen, der den gsamtzustand der anwendung hählt und zwischen den views wechselt.

mhnn naja obwohl, liegt vielleicht daran, dass mein model einfach im moment noch zu wenig zu tun hat.... egal ich schlaf nochmal drüber....
schreibt mir trotzdem eure meinung zu j2me und mvc. danke


----------



## The_S (24. Jul 2007)

Bei J2ME programmier ich eigntlich eher schlampig. Schon aufgrund von Performance und Speicherverbrauch sollte darauf verzichtet werden unnötig viele Klassen bzw. interfaces zu realisieren. Es ist sowieso eher unwahrscheinlich, dass du eine J2ME App im Nachhinein noch großartig verändern musst geschweigedenn ein anderer das tut oder auch nur den Code ansieht.

So ganz ohne Struktur gehts bei mir aber auch nicht, da ich J2SE gelernt habe und dort natürlich auch MVC eingesetzt wurde. Ich würde also einen mischmasch aus Performance und Übersichtlichkeit in J2ME programmieren.


----------



## ice-breaker (24. Jul 2007)

also bei der entwicklung von handyspielen sollte man wirklich auf mvc, design patterns und alles mögliche verwenden, so wenig klassen wie möglich etc
denn handys sind nicht gerade die schnellsten geräte und es gibt so teilweise ja schon flaschenhälse


----------



## The_S (24. Jul 2007)

ice-breaker hat gesagt.:
			
		

> also bei der entwicklung von handyspielen sollte man wirklich auf mvc, design patterns und alles mögliche verwenden, so wenig klassen wie möglich etc



???:L


----------



## ARadauer (24. Jul 2007)

ice-breaker ich glaub du wolltest auch schreiben, dass man eher auf patterns verzichten sollte.

ok klingt vernüftig. is aber nicht so einfach, wenn es für ein schulprojekt ist und der betreuer ein schönes klassen desing möchte. ok ich werde schon einen zwischenweg finden.

danke


----------



## C++ Pr0gg0r (26. Jul 2007)

Lasst mal eure "Optimierungen" stecken. Das ist Unsinn. Wieso sollte ein Programm langsamer werden, wenn ich denselben Code auf verschiedene Klassen verteile? Viel eher sollte man sich Gedanken um die Speicherverwaltung machen.

"Premature optimization is the root of all evil" -- Donald Knuth


----------



## The_S (26. Jul 2007)

C++ Pr0gg0r hat gesagt.:
			
		

> Lasst mal eure "Optimierungen" stecken. Das ist Unsinn. Wieso sollte ein Programm langsamer werden, wenn ich denselben Code auf verschiedene Klassen verteile? Viel eher sollte man sich Gedanken um die Speicherverwaltung machen.



Weil von den Klassen Objekte erstellt und Methoden aufgerufen werden müssen.


----------



## C++ Pr0gg0r (26. Jul 2007)

Objekte sind so gross wie die Summe ihrer Member. Das einzige was anfaellt, ist eine zusaetzliche Referenz. Beim Methodenaufruf eines anderen Objektes faellt eine Dereferenzierung an. Was schaetzt Du, um wieviel Prozent langsamer wird das Programm werden?


----------



## NTB (26. Jul 2007)

In der Theorie würde ich Dir zustimmen "C++ Pr0gg0riz0rpr0n...
...und in der Praxis frage ich: Du hast wohl nichts für Handies programmiert, was?


----------



## C++ Pr0gg0r (26. Jul 2007)

Doch. Habe ich. Ich habe ein 3D-Knobelspiel unter Verwendung von JSR-184 geschrieben und es auf meinem SE K750 getestet. Von SE ist uebrigens bekannt, dass dieses JSR als Wrapper um Mascot Capsule implementiert ist und daher noch ein Tick langsamer sein duerfte als native Implementierung. Dieses Spiel diente einzig dem Zweck rauszufinden wie leistungsfaehig moderne Mobiltelefone sind und wie frickelig man vorgehen muss, um Programme lauffaehig zu halten. Beim Programmieren habe ich das MVC-Framework konsequent umgesetzt und alle mir bis Dato bekannte Design-Prinzipien beachtet, also keinerlei optimierender Tricks benutzt. Und so bin ich zu dem Fazit gekommen, dass die Performance von Mobiltelefonen nicht der Flaschenhals ist, sondern der Speicher. Auch wenn Java einen GC anbietet, auf Handies ist dieser schlicht unbrauchbar weil er einfach nicht funktioniert. Von daher rate ich dazu, den Speicher manuell zu verwaltet und wieder zu verwenden. Nur so kann man das Problem der Speicherknappheit in den Griff kriegen.

Im Uebrigen hat mir dieses Spiel den heutigen Job beim zweitgroesstem Softwarehersteller Deutschlands eingebracht.


----------



## The_S (26. Jul 2007)

Womit wir schon beim Punkt währen. Du hast ein Spiel speziell für ein Handy zugeschnitten. Wenn du aber die breite Masse ansprechen möchtest, musst du deine Anwendungen für viele Modelle zur Verfügung stellen, wo du dann doch auf einige Probleme stoßen wirst  . Aber du kannst diese Diskussion gerne ja mal auf www.j2meforum.com anbringen  .


----------



## C++ Pr0gg0r (27. Jul 2007)

Ja genau. Das ist der Punkt. Ich weiss nicht ob Du es bewusst ueberlesen hast, oder wirklich nicht verstanden hast aber ich habe mein Spiel auf gar nichts zugeschnitten. Nur das Scheduling habe ich ein wenig getunt, das muss ich zugeben. Das Spiel habe ich geschrieben wie jedes andere Programm auch. Also ohne jeglicher Tricks zur Optimierung etc. weil mein Ziel eben war, rauszufinden was geht und was nicht geht. Aber davon mal abgesehen, heute schreibt man auch keine Programme bei denen man denkt, dass sie moeglicherweise auf einem P90 mit 32MB RAM laufen sollen. Insofern ist der Begriff der "breiten Masse" beliebig dehnbar.


----------



## The_S (27. Jul 2007)

OK, zugeschnitten war evtl. der falsche Ausdruck. Vielmehr meinte ich, du hast es nur auf einen (für 3D und J2ME ziemlich geeingeten) Mobiltelefon getestet.


----------



## C++ Pr0gg0r (28. Jul 2007)

Ja natuerlich. Wie sollte ich es auch auf einem ungeeignetem testen?


----------



## The_S (28. Jul 2007)

willst du mich net verstehen?


----------



## C++ Pr0gg0r (16. Aug 2007)

Magst Du es mir erklaeren?


----------



## The_S (17. Aug 2007)

um was gings gleich wieder?


----------



## ice-breaker (17. Aug 2007)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> um was gings gleich wieder?


unser leetige C++ Pr0g0r ist der Gott unter allen und weiß als einziger von allen, die Handy-Spiele entwickeln wie es richtig läuft


----------



## C++ Pr0gg0r (21. Aug 2007)

Nein. Aber er weiss, wie es laufen kann und hat seine Erfahrung hier zur Diskussion gestellt, statt mit inhaltslosen Postings andere dumm anzuflamen.


----------



## masta // thomas (21. Aug 2007)

C++ Pr0gg0r: kann ich dein Spiel auf meinem N70 testen?


----------



## C++ Pr0gg0r (22. Aug 2007)

Warum nicht. Ich melde mich am WE.


----------



## The_S (22. Aug 2007)

Es geht nicht darum, dass dein Game auf einigen Top-Modellen läuft, sondern darum, dass es auf möglichst vielen (auch älteren) Geräten funktioniert.

Wenn du nur die neuere Generation an Handys ansprechen möchtsest, sind deine Beiträge hier deplaziert, da es um die Entwicklung von Handyanwendungen allgemein geht. Und dazu gehören nunmal auch alte Geräte!


----------



## C++ Pr0gg0r (23. Aug 2007)

Sehe ich anders. Zuallererst existiert ein Problem, welches mit Hilfe eines Programms geloest werden soll. Das heisst, es werden Anforderungen an das Programm gestellt, welches diese Erfuellen soll. Dann wird das Programm implementiert, welches den Anforderungen genuegt. Das fertige Programm bestimmt dann auch die Mindestvoraussetzungen. Will ich das Programm benuzten, mein System aber die Mindestvoraussetzungen nicht erfuellt, so gibt es zwei Moeglichkeiten: ich aktualisiere mein System oder ich beschneide die Funktionalitaet des Programms. Waehle ich den die zweite Moeglichkeit, wird mein Programm nutzlos, weil es den Anforderungen nicht mehr genuegt. Schliesslich erwarte ich ja auch nicht, dass Eclipse auf einem Pentium 200 mit 32MB RAM laeuft. Es kann nicht das Ziel eines Programms sein, auf allen Systemen zu laufen. Das ist schlicht unmoeglich. Ressourcenknappheit ist keine Rechtfertigung fuer ueblen Code!

Frage: was sind denn fuer dich aeltere Geraete? Das Modell mit dem ich gearbeitet habe ist ueber 2 Jahre alt. Zaehlt es schon zu den aelteren fuer dich?


----------



## The_S (24. Aug 2007)

Naja, wenn du etwas verkaufen willst, musst du möglichst viele Leute ansprechen. Und da ist es vorallem bei J2ME wichtig, dass man auch ältere Geräte erreichen kann.

Auch heutzutage kommen noch einige Geräte raus, die schlechter sind als dein K750i (das wars doch!?), auch wenn es schon 2 Jahre alt ist. Das K750i ist halt immernoch ein ziemlicher Alleskönner. Ich selbst besitze ebenfalls ein K750i. Dieses wurde jetzt gegen ein N95 von Nokia ausgetauscht. Du glaubst ja gar nicht, wie viele Bekannte von mir Interesse an diesem Handy (trotz kaputtem Akku) gezeigt haben  .

Generell lässt sich darüber natürlich streiten. Programmiere ich ein Programm, dass auf möglichst vielen Geräten läuft, oder wird mein Programm so hammermäßig gut, dass sich die User für dieses Programm neue Hardware kaufen?

Kommt halt immer darauf an was man programmiert.


----------



## C++ Pr0gg0r (6. Sep 2007)

So. Hier das Spiel, dass ich geschrieben haben. Es enthaelt noch paar logische Bugs, aber ich habe gerade weder Zeit noch Lust diese zu suchen und beheben. Das soll aber vorerst nicht stoeren. Interessant ist, auf welchen Geraeten es laeuft. Bislang nur auf einem SE K750i und einem Z550i getestet. Bitte um Feedback.

http://sebastiantoby.homeip.net/prg/mindcubes.zip


----------

