jar für javafähiges Handy?
-
Hallo, lerne zur Zeit Java an der Uni. Ich muss ganz ehrlich sagen, dass es mich als C++ Programmierer momentan nicht wirklich vom Hocker reißt, aber ich dachte mir wenn ich schon ne Sprache lerne dann will ich auch was damit machen. Und wenn ich schon ein javafähiges Handy habe dann will ich auch mal gucken ob ich nicht ein Programm dafür schreiben kann. Mein einziges Problem ist die Durchführung. Ich weiß, dass es ein Programm jar gibt, kann aber mein Testprogramm (keine GUI) nicht damit in ne jar packen. Hat jemand schonmal sowas gemacht und kann mir Tipps geben?
Thx,
Mastah
-
du kannst einfach unter der konsole mit jar arbeiten..
wenn die pfade stimmen (also java in der konsole bekannt ist) schreibe einfach mal jar:
folgender output kommt:C:\>jar Syntax: jar {ctxu}[vfm0M] [JAR-Datei] [Manifest-Datei] [-C dir] Dateien ... Optionen: -c neues Archiv erstellen -t Inhaltsverzeichnis f³r Archiv auflisten -x benannte (oder alle) Dateien aus dem Archiv extrahieren -u vorhandenes Archiv aktualisieren -v ausf³hrliche Ausgabe f³r Standardausgabe generieren -f Namen der Archivdatei angeben -m Manifestinformationen aus angegebener Manifest-Datei einbeziehen -0 nur speichern; keine ZIP-Komprimierung verwenden -M keine Manifest-Datei f³r die Eintrõge erstellen -i Indexinformationen f³r die angegebenen JAR-Dateien generieren -C ins angegebene Verzeichnis wechseln und folgende Datei einbeziehen Falls eine Datei ein Verzeichnis ist, wird sie rekursiv verarbeitet. Der Name der Manifest-Datei und der Name der Archivdatei m³ssen in der gleichen Reihenfolge wie die Flags ''m'' und ''f'' angegeben werden. Beispiel 1: Archivieren von zwei Klassendateien in einem Archiv mit dem Namen cl asses.jar: jar cvf classes.jar Foo.class Bar.class Beispiel 2: Verwenden der vorhandenen Manifest-Datei ''meinmanifest'' und Archiv ieren aller Dateien im Verzeichnis foo/ in ''classes.jar'': jar cvfm classes.jar meinmanifest -C foo/ . C:\>
-
aber ein normales java program laeuft nicht auf einem handy
du musst mit der J2ME (Micro Edition) Arbeiten
in der CLD Configuration und dem MID Profileman schreibt dann Midlets
es gibt auf der sun seite genug informationen
-
jo
so früh am morgen habe ich nur "jar " gesehen..
aber ist das auch geklärt :p
-
huhu..
hab mir das auchmal runtergeladen (j2me). Da kommt dann JSDK1.4.1 raus, dazu binde ich dann noch das runtergeladene Siemens SDK einSET CLASSPATH=D:\Sources\Java\JSDK1.4.1\lib\dt.jar;C:\siemens\SMTK\lib\api.jar D:\Sources\Java\JSDK1.4.1\bin\javac.exe Hello.java pause
so quasi.. kompilieren tut er das, aber kommt keine jar ?jad? bei raus, sondern nur ne class.
habe ich bis zum Punkt wo ich compiliere alles richtig gemacht?
hier mal das HelloWorld vom Siemens SDK:
/* * Copyright (c) 1999 Siemens. All Rights Reserved. */ import javax.microedition.lcdui.*; import javax.microedition.midlet.*; import com.siemens.mp.game.Sound; /** * Hello, World! program */ public class Hello extends MIDlet implements CommandListener { static final String EXIT_COMMAND_LABEL = "Exit hello world"; static final String AGAIN_COMMAND_LABEL = "Again, again ..."; Display display; static Hello hello; protected void destroyApp (boolean b) { display.setCurrent(null); this.notifyDestroyed(); // notify KVM } protected void pauseApp () { } protected void startApp () { HelloCanvas canvas = new HelloCanvas(); display = Display.getDisplay(this); Command exitCommand = new Command(EXIT_COMMAND_LABEL , Command.SCREEN, 0); Command againCommand = new Command(AGAIN_COMMAND_LABEL, Command.SCREEN, 1); canvas.addCommand(exitCommand); canvas.addCommand(againCommand); canvas.setCommandListener(this); display.setCurrent(canvas); // com.siemens.mp.game.Sound.playTone(com.siemens.mp.game.Sound.PEEP); } public void commandAction (Command c, Displayable d) { String label = c.getLabel(); if (label == EXIT_COMMAND_LABEL ) { destroyApp(false); } else if (label == AGAIN_COMMAND_LABEL ) { } } } class HelloCanvas extends Canvas { /** * Method paint * Draws the text "Hello World!" in the middle of the screen. * @param g */ public void paint (Graphics g) { Font font = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_LARGE); g.setFont(font); g.setColor(0,0,0); String str = new String("Hello World !"); g.drawString(str, getWidth()/2,getHeight()/2, Graphics.HCENTER | Graphics.BASELINE); } }
-
Hallo,
Tut mir leid, wenn ich als absoluter Java Neuling hier mal (artfremd) dazwischenfunke.
Ich spiele wie gesagt auch gerade ein bisschen mit Java rum. Als Motivation wollte ich auch ein bisschen Handysoftware zusammenklimpern. Welches Handy ist denn da zu empfehlen bzw. welcher Anbieter hat da ein vernünftiges SDK?vielen Dank
-
Ich glaube Siemens ist da in der Richtung ganz gut.
Aber solange Du dich an den Standard hälst, sollte das Midlet auf allen Handy genauso ablaufen..
-
Wenn ich das dann richtig verstehe läuft also alles, was standardkonform zu J2ME ist auf allen Handys. Wenn dem so ist wäre es ja egal oder sind da auch verschiedene Hersteller mehr oder weniger stark am Standard orientiert?
Das SDK hat demnach nur den Sinn zusätzliche, nicht im Standard enthaltene Funktionalität reinzuziehen oder irre ich da?
-
das passt schon so
es wird auch ein class file draus
jetzt kannst du es mittels jar einpacken
und aufs handy uebertragenZu J2ME:
Das sieht folgendermassen aus bei J2MEes gibt verschiedene Configurations Definitionen
da gibt es CDC - Connected device configuration
und die CLDC Connected, Limited Device Configurationconnected meint hier an das internet irgendwie angeschlossen - kommunikationstauglich
CLDC ist eine device configuration fuer limited devices
einfaches interface, weniger speicher usw
gutes beispiel - pda und handyin jeder configuration gibt es dann verschieden Profile
zum beispiel das MID Profile (MIDP)eine connection ist quasi das environment (Rechenleistung, Laufzeit, speicher, usw) und ein profil ist quasi ein funktionsumfang den das device unterstuetzt
zB kannst du dir ja denken das alle Handy (CLDC) und andere kleinen devices spezielle dinge unterstuetzen die eine Set-Top Box (CDC) nicht braucht
aber auch zwischen handy funktionalitaet mag es unterschiede geben
zB koennte jemand ein profil spezifizieren fuer sicheres netbanking
und nur wenn dieses NETBANK-Profil von dir implementiert wird kannst du darauf zugreifen
das heisst diese Anwendung rennt nur auf NETBANK-P faehigen Handies
ein profil ist quasi ein vertragzur zeit das einzig nennenswerte (und standardisierte) profil ist MIDP
GombotzD
-
TheBigW schrieb:
Wenn ich das dann richtig verstehe läuft also alles, was standardkonform zu J2ME ist auf allen Handys. Wenn dem so ist wäre es ja egal oder sind da auch verschiedene Hersteller mehr oder weniger stark am Standard orientiert?
Das SDK hat demnach nur den Sinn zusätzliche, nicht im Standard enthaltene Funktionalität reinzuziehen oder irre ich da?Genau richtig.
Die Hersteller statten Ihre SDKs mit zusätzlichen Features aus, die dann aber nur auf den jeweiligen Geräten der Hersteller funktionieren.
Alles was Du nach dem J2ME Standard programmierst, sollte demnach auf allen Java-Handys auch laufen.. Die Betonung liegt auf sollte..
-
Neben Siemens kann ich besonders das Sony Ericsson T610 empfehlen. Die Developer Seite von denen ist reichlich ausgestattet und das Display ist (glaube ich ) größer als bei den Siemens-Geräten.