SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
Introduc)on	
  to	
  Asha	
  Pla1orm	
  
and	
  Java	
  ME	
  
Jussi	
  Pohjolainen	
  
Tampere	
  University	
  of	
  Applied	
  Sciences	
  
About	
  Java	
  ME
	
  
•  Java	
  ME	
  (J2ME	
  is	
  older	
  name..)	
  is	
  the	
  world’s	
  
most	
  widespread	
  mobile	
  applica1on	
  
pla3orm	
  
•  Developed	
  by	
  Sun	
  Microsystems	
  and	
  bought	
  
by	
  Oracle	
  
	
  
	
  
Why?
	
  
•  So	
  why?	
  Poten1al	
  market	
  reach!	
  
•  It’s	
  possible	
  to	
  create	
  awesome	
  apps	
  with	
  new	
  
really	
  powerful	
  APIs:	
  GPS,	
  Sensors,	
  3D	
  
Graphics,	
  Touch	
  etc..	
  
•  Hardware	
  geQng	
  more	
  powerful	
  and	
  less	
  
expensive	
  
Some	
  history
	
  
•  Java	
  ME	
  (J2ME)	
  was	
  targeted	
  to	
  be	
  cross-­‐pla1orm	
  solu)on	
  for	
  
mobile	
  
•  Mobile	
  opera)ng	
  system	
  must	
  support	
  Java	
  for	
  enabling	
  Java	
  
apps	
  

•  Available	
  opera)ng	
  systems	
  
–  Symbian	
  and	
  it's	
  varia)ons:	
  S60,	
  S90	
  
–  S40	
  
•  Symbian	
  is	
  now	
  dead	
  and	
  S40	
  has	
  evolved	
  to	
  Asha	
  
•  Today:	
  Java	
  ME	
  is	
  available	
  for	
  Asha	
  (forget	
  about	
  the	
  cross-­‐
pla1orm)	
  
Asha	
  Pla1orm
	
  
•  Asha	
  series	
  is	
  a	
  range	
  for	
  low-­‐end	
  or	
  feature	
  
phones	
  produced	
  by	
  Nokia	
  (and	
  soon	
  MS)	
  
•  First	
  genera1on	
  Asha	
  phones	
  (S40	
  OS)	
  
–  200	
  and	
  300	
  series	
  

•  Second	
  genera1on	
  Asha	
  phones	
  (Asha	
  
Pla1orm)	
  
–  500	
  series	
  
Asha	
  Pla1orm
	
  
•  UI	
  similari)es	
  from	
  Symbian	
  and	
  Meego	
  (N9)	
  
–  Swipe,	
  fast	
  lane..	
  

•  Phones	
  
–  Asha	
  500,	
  501,	
  502	
  and	
  503	
  

•  Apps	
  are	
  wri]en	
  in	
  Java	
  ME	
  or	
  Web	
  apps	
  
–  Powered	
  by	
  gecko	
  rendering	
  engine	
  (Nokia	
  
Browser)	
  
Lot	
  of	
  possibili)es
	
  
• 
• 
• 
• 
• 
• 
• 
• 
• 

Here	
  API	
  
Gestures	
  API	
  
Image	
  Scaling	
  API	
  
Contact	
  API	
  
Web	
  Services	
  API	
  
Loca)on	
  API	
  
Mobile	
  Sensor	
  API	
  
Bluetooth	
  API	
  
3D	
  Graphics	
  API	
  

• 
• 
• 
• 
• 
• 

Internaliza)on	
  API	
  
File	
  and	
  PIM	
  API	
  
Mobile	
  Media	
  API	
  
Messaging	
  API	
  
Share	
  API	
  
VoIP	
  API	
  
JAVA	
  ME	
  TECHNOLOGY	
  
Java	
  Pla1orms	
  
•  Java	
  Standard	
  Edi1on	
  (Java	
  SE)	
  
–  Designed	
  for	
  desktop	
  computers	
  
–  Runs	
  on	
  top	
  of	
  OS	
  X,	
  Linux,	
  Windows	
  …	
  
•  Java	
  Enterprise	
  Edi1on	
  (Java	
  EE)	
  
–  Mul)user,	
  enterprise-­‐wide	
  applica)ons	
  
–  Based	
  on	
  J2SE	
  +	
  several	
  APIs	
  for	
  server-­‐side	
  
compu)ng	
  
•  Java	
  Micro	
  Edi1on	
  (Java	
  ME)	
  
–  For	
  )ny,	
  small	
  and	
  resource-­‐constrained	
  devices	
  
Java	
  Edi)ons	
  
Our	
  course	
  
concentrates	
  
on	
  this	
  
Op)onal	
  Packages	
  

Java	
  EE	
  
Java	
  SE	
  

Java	
  ME	
  

Personal	
  Profile	
  

Op)onal	
  Packages	
  

Founda)on	
  Profile	
  

MIDP	
  

CDC	
  

CLDC	
  

Java	
  Virtual	
  Machine	
  

KVM	
  
JCP	
  and	
  JSR	
  
•  Java	
  Community	
  Process,	
  JCP,	
  is	
  a	
  formalized	
  
process	
  which	
  creates	
  defini1ons	
  of	
  future	
  
versions	
  and	
  features	
  of	
  the	
  Java	
  pla1orm.	
  
•  These	
  defini)ons	
  are	
  called	
  Java	
  Specifica)on	
  
Requests,	
  JSR	
  
•  JSR	
  is	
  a	
  formal	
  document	
  that	
  describes	
  
proposed	
  specifica)on	
  and	
  technology	
  
•  There	
  are	
  lot	
  of	
  JSRs.	
  
–  h]ps://jcp.org/ja/jsr/all	
  
Java	
  ME	
  
Java	
  Me	
  
Op)onal	
  Packages	
  
Personal	
  Profile	
  

Op)onal	
  Packages	
  

Founda)on	
  Profile	
  

Mobile	
  Informa)on	
  Device	
  Profile	
  
(MIDP)	
  

Connected	
  Device	
  Configura)on	
  	
  
(CLC)	
  

Connected	
  Limited	
  Device	
  
Configura)on	
  (CLDC)	
  

JVM	
  

KVM	
  
Kilo	
  Virtual	
  Machine	
  
•  KVM	
  is	
  similar	
  to	
  JVM,	
  runs	
  apps	
  wri]en	
  in	
  
Java	
  –	
  language	
  
•  KVM	
  is	
  used	
  in	
  cell	
  phones,	
  where	
  JVM	
  is	
  used	
  
on	
  computers	
  
•  Op)mized	
  for	
  small	
  size	
  
•  More	
  info	
  about	
  KVM	
  
–  h]p://www.oracle.com/technetwork/java/
javame-­‐old/kvmwp-­‐150240.pdf	
  
Java	
  ME	
  
Java	
  Me	
  
Op)onal	
  Packages	
  
Personal	
  Profile	
  

Op)onal	
  Packages	
  

Founda)on	
  Profile	
  

Mobile	
  Informa)on	
  Device	
  Profile	
  
(MIDP)	
  

Connected	
  Device	
  Configura1on	
  	
  
(CLC)	
  

Connected	
  Limited	
  Device	
  
Configura1on	
  (CLDC)	
  

JVM	
  

KVM	
  
Configura)ons:	
  CLDC	
  
•  CLDC	
  (JSR	
  139)	
  
–  Small	
  wireless	
  devices	
  with	
  intermiRent	
  network	
  
connec)ons	
  
–  Low	
  power	
  consump)on	
  
–  Phones,	
  Pagers,	
  Bar	
  code	
  scanners..	
  

•  CDC	
  (JSR	
  36)	
  
–  Larger	
  Devices	
  with	
  a	
  robust	
  network	
  connec)on	
  
–  Set	
  top	
  boxes,	
  Internet	
  appliances	
  
CDC	
  -­‐	
  CLDC	
  
smaller	
  

larger	
  

Pagers	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Mobile	
  Phones	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  PDAs	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Car	
  Naviga)on	
  Systems	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Internet	
  appliances	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Set-­‐top	
  Boxes	
  

Connected	
  Limited	
  Device	
  Configura1on	
  
(CLDC)	
  

Connected	
  Device	
  Configura1on	
  	
  
(CDC)	
  
CLDC	
  Func)onality	
  
• 
• 
• 
• 
• 

Subset	
  of	
  Java	
  language	
  	
  
Subset	
  of	
  core	
  Java	
  SE	
  libraries	
  
Provides	
  basic	
  input	
  and	
  output	
  
Provides	
  basic	
  networking	
  support	
  
Security	
  
CLDC	
  Libraries	
  
•  CLDC	
  has	
  37	
  common	
  classes	
  from	
  Java	
  SE	
  
–  java.lang:	
  Boolean,	
  Byte,	
  Integer,	
  Long,	
  String…	
  
–  java.u1l:	
  Calendar,	
  Date,	
  Enumera)on,	
  
Hashtable..	
  
–  java.io:	
  InputStream,	
  OutputStream…	
  

•  CLDC	
  1.0	
  does	
  not	
  have	
  floa)ng	
  point	
  support	
  
•  CLDC	
  1.1	
  supports	
  floa)ng	
  point	
  
Java	
  ME	
  
Java	
  Me	
  
Op)onal	
  Packages	
  
Personal	
  Profile	
  

Op)onal	
  Packages	
  

Founda)on	
  Profile	
  

Mobile	
  Informa1on	
  Device	
  Profile	
  
(MIDP)	
  

Connected	
  Device	
  Configura)on	
  	
  
(CLC)	
  

Connected	
  Limited	
  Device	
  
Configura)on	
  (CLDC)	
  

JVM	
  

KVM	
  
The	
  Mobile	
  Informa)on	
  Device	
  Profile	
  
(MIDP)	
  
•  Specifica)on	
  for	
  wireless	
  devices	
  
•  Provides	
  general	
  Java	
  libraries	
  for	
  developing	
  
apps	
  for	
  wireless	
  devices	
  
•  Versions:	
  MIDP	
  1.0	
  (JSR	
  37)	
  and	
  MIDP	
  2.x	
  (JSR	
  
118)	
  
•  MIDP	
  3.0	
  (JSR	
  271)	
  also	
  available	
  but	
  not	
  not	
  
implemented	
  in	
  any	
  phones	
  
	
  
MIDP	
  Differences
	
  
•  MIDP	
  1.0	
  
–  Limited	
  graphics	
  and	
  sound	
  
–  Only	
  HTTP,	
  no	
  Sockets	
  

•  MIDP	
  2.X	
  
–  Game	
  API	
  
–  Network	
  and	
  Mul)media	
  support	
  

•  MIDP	
  3.0	
  
–  Background	
  MIDlets,	
  Improved	
  UI,	
  Localisa)on..	
  
MIDP	
  Soqware	
  Components	
  
MIDP	
  Java	
  App	
  	
  

Device	
  Specific	
  
Java	
  App	
  	
  

Op)onal	
  Java	
  
Packages	
  

Op)onal	
  Device	
  
Specific	
  Packages	
  
Na)ve	
  Applica)on	
  
MIDP	
  
CLDC	
  
Device	
  Opera)ng	
  System	
  
Java	
  ME	
  
Java	
  Me	
  
Op)onal	
  Packages	
  
Personal	
  Profile	
  

Op1onal	
  Packages	
  

Founda)on	
  Profile	
  

Mobile	
  Informa)on	
  Device	
  Profile	
  
(MIDP)	
  

Connected	
  Device	
  Configura)on	
  	
  
(CLC)	
  

Connected	
  Limited	
  Device	
  
Configura)on	
  (CLDC)	
  

JVM	
  

KVM	
  
Op)onal	
  Packages,	
  JSRs	
  
File	
  Connec)on	
  and	
  PIM	
  
Bluetooth	
  
Wireless	
  Messaging	
  API	
  (WMA)	
  
Mobile	
  Media	
  API	
  (MMAPI)	
  
Web	
  Services	
  
Security	
  and	
  Trust	
  Services	
  
Loca)on	
  API	
  
SIP	
  API	
  
Mobile	
  3D	
  Graphics	
  
Java	
  Technology	
  for	
  the	
  Wireless	
  
Industry	
  (JTWI)	
  
•  Wireless	
  Messaging	
  2.0	
  (WMA)	
  
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 

• 
• 
• 
• 
• 
• 
• 
• 
• 

Content	
  Handler	
  API	
  
SVG	
  1.0	
  
Payment	
  API	
  
Advanced	
  Mul)media	
  
Supplements	
  (AMMS)	
  
Mobile	
  Interna)onaliza)on	
  API	
  
Java	
  Bindings	
  for	
  the	
  OpenGL	
  ES	
  
API	
  
Mobile	
  Service	
  Architecture	
  
Mobile	
  Sensor	
  API	
  
SVG	
  2.0	
  
Problems
	
  
• 
• 
• 
• 

Different	
  screen	
  sizes	
  
Bugs	
  in	
  phones	
  
Performance	
  
Fragmenta)on,	
  JSRs	
  
MIDlet	
  Development	
  
How	
  to	
  Build	
  MIDlets?	
  
•  MIDlet	
  =	
  MIDP	
  Applica)on	
  
•  If	
  Java	
  SE	
  is	
  familiar,	
  MIDlet	
  development	
  is	
  
easy	
  
•  Part	
  of	
  the	
  API	
  works	
  exactly	
  like	
  Java	
  SE	
  
•  Building	
  process	
  is	
  different	
  
Example	
  MIDlet
	
  
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MyMidlet extends MIDlet {
public MyMidlet() { }
protected void destroyApp(boolean unconditional)
throws MIDletStateChangeException { }
protected void pauseApp() { }
protected void startApp() throws MIDletStateChangeException { }
}
Lifecycle:	
  startApp
•  startApp	
  –	
  method	
  is	
  called	
  when	
  MIDlet	
  has	
  
been	
  started	
  (aqer	
  constructor)	
  
–  Applica1on	
  Management	
  SoVware	
  (AMS)	
  calls	
  
the	
  method	
  
–  Aqer	
  the	
  method,	
  the	
  MIDlet	
  is	
  in	
  Ac1vate	
  state	
  

•  Method	
  is	
  called	
  only	
  once	
  in	
  Asha	
  pla1orm	
  
•  What	
  to	
  do	
  here?	
  
–  Acquire	
  needed	
  resources	
  

	
  
Lifecycle:	
  pauseApp
•  pauseApp	
  –	
  method	
  is	
  called	
  when	
  MIDlet	
  is	
  
moved	
  to	
  paused	
  state	
  
–  In	
  S40:	
  when	
  phone	
  rings	
  
–  In	
  Asha:	
  pauseApp	
  is	
  never	
  called!	
  

•  What	
  to	
  do	
  here	
  
–  In	
  S40:	
  release	
  any	
  resources	
  
–  In	
  Asha:	
  don't	
  do	
  anything.	
  You	
  must	
  implement	
  
the	
  method	
  (leave	
  it	
  blank)	
  
Lifecycle:	
  destroyApp
•  destroyApp	
  –	
  method	
  is	
  called	
  when	
  MIDlet	
  is	
  
moved	
  to	
  destroyed	
  state	
  (app	
  terminates)	
  
–  Five	
  seconds	
  1me	
  to	
  do	
  cleaning	
  

•  When	
  this	
  method	
  is	
  called?	
  
–  Leaving	
  app	
  (back-­‐bu]on,	
  swipe)	
  
–  AMS	
  
–  Removing	
  memory	
  card	
  
–  Out	
  of	
  memory	
  or	
  excep)on	
  in	
  app	
  
•  What	
  to	
  do	
  here	
  
–  Release	
  resources	
  
boolean unconditional
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MyMidlet extends MIDlet {
protected void destroyApp(boolean unconditional)
throws MIDletStateChangeException {
if(unconditional) {
// You must cleanup and release resources, we
// are going to exit!
} else {
// You may cancel the exit request by throwing
// a MIDletStateChangeException!
}
}
}
MIDlet’s	
  Life	
  Cycle
	
  
Constructor
destroyApp()
Paused	
  

Destroyed	
  
pauseApp()

startApp()
Ac)ve	
  
Applica)on	
  Manager
	
  
•  Applica1on	
  Manager	
  controls	
  all	
  the	
  methods	
  
in	
  the	
  previous	
  slide	
  
•  You	
  can	
  try	
  to	
  change	
  the	
  state	
  by	
  using	
  
methods	
  like:	
  
–  void notifyDestroyed()!
–  notifyPaused()!
–  resumeRequest()!
Exi)ng	
  using	
  no)fyDestroyed()
	
  
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MyMidlet extends MIDlet {
protected void destroyApp(boolean unconditional)
throws MIDletStateChangeException {
cleanUpResources();
}
protected void pauseApp() { }
protected void startApp() throws MIDletStateChangeException {
cleanUpResources();
notifyDestroyed(); // destroyApp is NOT called!
}
private void cleanUpResources() {
// ..
}
}
HOW	
  TO	
  BUILD	
  MIDLETS?	
  
Building	
  Process	
  
1. 
2. 
3. 
4. 
5. 

Compile	
  
Preverify	
  
Compress	
  
Create	
  JAD-­‐file	
  
Upload	
  to	
  client	
  
1.	
  Compile	
  
•  Compile	
  a	
  MIDlet:	
  
–  javac –classpath midp21.jar;cldc11.jar
MyApp.java

•  Use	
  now	
  base	
  classes	
  from	
  Java	
  ME!	
  
•  midp	
  classes?	
  
–  C:NokiaDevicesNokia_Asha_SDK_1_1lib

•  Aqer	
  the	
  compile,	
  one	
  must	
  preverify	
  the	
  
result:	
  
2.	
  Preverify	
  
•  It	
  is	
  checked	
  in	
  the	
  preverifing	
  process	
  that	
  your	
  MIDlet	
  does	
  
not	
  harm	
  the	
  client-­‐machine.	
  
•  In	
  Java	
  SE	
  this	
  checking	
  is	
  done	
  by	
  JVM.	
  KVM	
  does	
  not	
  have	
  
this	
  kind	
  of	
  security	
  checking!	
  
•  Security	
  checking	
  is	
  done	
  in	
  two	
  parts	
  
–  Preverify	
  before	
  sending	
  MIDlet	
  to	
  the	
  client	
  machine	
  
–  Client	
  machines	
  own	
  check	
  

•  Command	
  line:	
  
–  preverify –classpath .; midp classes –d .
Midlet!

•  Preverify	
  loca1on?	
  
–  C:NokiaDevicesNokia_Asha_SDK_1_1bin!
3.	
  Compress	
  
•  Aqer	
  the	
  MIDlet	
  is	
  compiled	
  and	
  preverified,	
  
you	
  must	
  compress	
  all	
  the	
  classes	
  (and	
  
resources)	
  into	
  one	
  jar-­‐file.	
  
•  Jar-­‐file	
  contains	
  also	
  MANIFEST.MF	
  -­‐	
  file,	
  
which	
  describes	
  the	
  contents	
  of	
  the	
  jar-­‐file.	
  	
  
•  Compressing	
  with	
  the	
  jar-­‐tool:	
  
–  jar cvmf MANIFEST.MF MIDlet.jar
MIDlet.class!
Example	
  of	
  Manifest	
  file	
  
MIDlet-1: MyMIDlet, MyMIDlet.png, MyMIDlet!
MIDlet-Name: MyMIDlet!
MIDlet-Vendor: Jussi Pohjolainen!
MIDlet-Version: 1.0!
MicroEdition-Configuration: CLDC-1.1!
MicroEdition-Profile: MIDP-2.1!
4.	
  Create	
  JAD	
  -­‐	
  file	
  
•  Java	
  Applica)on	
  Descriptor	
  file	
  describes	
  the	
  
contents	
  of	
  MIDlet.	
  
•  JAD-­‐file	
  is	
  used	
  so	
  that	
  the	
  client	
  machine	
  can	
  
have	
  informa)on	
  about	
  the	
  soqware	
  before	
  
installing	
  it.	
  
Example	
  of	
  JAD-­‐file	
  
MIDlet-1: MyMidlet, MyMidlet.png, MyMidlet!
MIDlet-Jar-Size: 1056 // CHECK THIS!!
MIDlet-Jar-URL: MyMidlet.jar!
MIDlet-Name: MyMidlet!
MIDlet-Vendor: Unknown!
MIDlet-Version: 1.0!
MicroEdition-Configuration: CLDC-1.1!
MicroEdition-Profile: MIDP-2.1!
Distribu)on	
  
Preverified	
  classes	
  

Resource	
  files	
  

Manifest	
  file	
  

jar	
  

Jar-­‐file	
  

Jad-­‐file	
  

Mobile	
  
Phone	
  
Opening	
  in	
  Emulator
	
  
•  You	
  can	
  start	
  the	
  
emulator	
  from	
  
command	
  line	
  
– 

Nokia_Asha_SDK_1_1_e
m.exe -classpath
"MyMidlet.jar"
"MyMidlet.jad"
Deploying	
  to	
  Phone
	
  
•  Transfer	
  the	
  .jad	
  
and	
  .jar	
  to	
  phone	
  using	
  
–  bluetooth	
  or	
  
–  mass	
  storage	
  
In	
  Conclusion
	
  
•  Mobile	
  app	
  must	
  
–  extend	
  MIDlet	
  class	
  which	
  control's	
  the	
  lifecycle	
  
–  package	
  all	
  files	
  in	
  JAR	
  	
  
•  include	
  MANIFEST.MF	
  file	
  contained	
  in	
  JAR	
  file	
  

–  include	
  a	
  Java	
  Applica)on	
  Descriptor	
  (JAD)	
  file	
  
–  have	
  all	
  .class	
  preverified	
  before	
  deployment	
  

Mais conteúdo relacionado

Mais procurados

CSS pattern libraries
CSS pattern librariesCSS pattern libraries
CSS pattern librariesRuss Weakley
 
Amp and higher computing science
Amp and higher computing scienceAmp and higher computing science
Amp and higher computing scienceCharlie Love
 
01 overview-and-setup
01 overview-and-setup01 overview-and-setup
01 overview-and-setupsnopteck
 
Intro to-html-backbone
Intro to-html-backboneIntro to-html-backbone
Intro to-html-backbonezonathen
 
Web architecture - overview of techniques.
Web architecture - overview of  techniques.Web architecture - overview of  techniques.
Web architecture - overview of techniques.Ruslan Shevchenko
 
Database2011 MySQL Sharding
Database2011 MySQL ShardingDatabase2011 MySQL Sharding
Database2011 MySQL ShardingMoshe Kaplan
 
Introduction to Web Programming - first course
Introduction to Web Programming - first courseIntroduction to Web Programming - first course
Introduction to Web Programming - first courseVlad Posea
 
Linux, Apache, Mysql, PHP
Linux, Apache, Mysql, PHPLinux, Apache, Mysql, PHP
Linux, Apache, Mysql, PHPwebhostingguy
 
Java web services soap rest training from hyderabad
Java web services soap rest training from hyderabadJava web services soap rest training from hyderabad
Java web services soap rest training from hyderabadFuturePoint Technologies
 
Killing the Angle Bracket
Killing the Angle BracketKilling the Angle Bracket
Killing the Angle Bracketjnewmanux
 
XPages and Java (DanNotes 50th conference, November 2013)
XPages and Java (DanNotes 50th conference, November 2013)XPages and Java (DanNotes 50th conference, November 2013)
XPages and Java (DanNotes 50th conference, November 2013)Per Henrik Lausten
 
REST services and IBM Domino/XWork - DanNotes 19-20. november 2014
REST services and IBM Domino/XWork - DanNotes 19-20. november 2014REST services and IBM Domino/XWork - DanNotes 19-20. november 2014
REST services and IBM Domino/XWork - DanNotes 19-20. november 2014John Dalsgaard
 
Webservices Workshop - september 2014
Webservices Workshop -  september 2014Webservices Workshop -  september 2014
Webservices Workshop - september 2014clairvoyantllc
 
Html & Css presentation
Html  & Css presentation Html  & Css presentation
Html & Css presentation joilrahat
 
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory CourseRuby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Coursepeter_marklund
 
MWLUG 2016 : AD117 : Xpages & jQuery DataTables
MWLUG 2016 : AD117 : Xpages & jQuery DataTablesMWLUG 2016 : AD117 : Xpages & jQuery DataTables
MWLUG 2016 : AD117 : Xpages & jQuery DataTablesMichael Smith
 

Mais procurados (20)

CSS pattern libraries
CSS pattern librariesCSS pattern libraries
CSS pattern libraries
 
Java Server Pages
Java Server PagesJava Server Pages
Java Server Pages
 
Amp and higher computing science
Amp and higher computing scienceAmp and higher computing science
Amp and higher computing science
 
01 overview-and-setup
01 overview-and-setup01 overview-and-setup
01 overview-and-setup
 
Intro to-html-backbone
Intro to-html-backboneIntro to-html-backbone
Intro to-html-backbone
 
Web architecture - overview of techniques.
Web architecture - overview of  techniques.Web architecture - overview of  techniques.
Web architecture - overview of techniques.
 
Mwml
MwmlMwml
Mwml
 
Database2011 MySQL Sharding
Database2011 MySQL ShardingDatabase2011 MySQL Sharding
Database2011 MySQL Sharding
 
Introduction to Web Programming - first course
Introduction to Web Programming - first courseIntroduction to Web Programming - first course
Introduction to Web Programming - first course
 
Linux, Apache, Mysql, PHP
Linux, Apache, Mysql, PHPLinux, Apache, Mysql, PHP
Linux, Apache, Mysql, PHP
 
Java web services soap rest training from hyderabad
Java web services soap rest training from hyderabadJava web services soap rest training from hyderabad
Java web services soap rest training from hyderabad
 
REST in Practice
REST in PracticeREST in Practice
REST in Practice
 
Killing the Angle Bracket
Killing the Angle BracketKilling the Angle Bracket
Killing the Angle Bracket
 
XPages and Java (DanNotes 50th conference, November 2013)
XPages and Java (DanNotes 50th conference, November 2013)XPages and Java (DanNotes 50th conference, November 2013)
XPages and Java (DanNotes 50th conference, November 2013)
 
REST services and IBM Domino/XWork - DanNotes 19-20. november 2014
REST services and IBM Domino/XWork - DanNotes 19-20. november 2014REST services and IBM Domino/XWork - DanNotes 19-20. november 2014
REST services and IBM Domino/XWork - DanNotes 19-20. november 2014
 
Java server pages
Java server pagesJava server pages
Java server pages
 
Webservices Workshop - september 2014
Webservices Workshop -  september 2014Webservices Workshop -  september 2014
Webservices Workshop - september 2014
 
Html & Css presentation
Html  & Css presentation Html  & Css presentation
Html & Css presentation
 
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory CourseRuby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
 
MWLUG 2016 : AD117 : Xpages & jQuery DataTables
MWLUG 2016 : AD117 : Xpages & jQuery DataTablesMWLUG 2016 : AD117 : Xpages & jQuery DataTables
MWLUG 2016 : AD117 : Xpages & jQuery DataTables
 

Semelhante a Intro to Java ME and Asha Platform

01 java 2 micro edition
01 java 2 micro edition01 java 2 micro edition
01 java 2 micro editioncorneliuskoo
 
Game Development for Nokia Asha Devices with Java ME #1
Game Development for Nokia Asha Devices with Java ME #1Game Development for Nokia Asha Devices with Java ME #1
Game Development for Nokia Asha Devices with Java ME #1Marlon Luz
 
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008JUG Lausanne
 
Nokia Asha App Development - Part 1
Nokia Asha App Development - Part 1Nokia Asha App Development - Part 1
Nokia Asha App Development - Part 1Marlon Luz
 
J2ME mobile app development
J2ME mobile app developmentJ2ME mobile app development
J2ME mobile app developmentMuthu Kumar
 
Ben Pashkoff - java embedded - 24mai2011
Ben Pashkoff - java embedded - 24mai2011Ben Pashkoff - java embedded - 24mai2011
Ben Pashkoff - java embedded - 24mai2011Agora Group
 
JavaME Development Workflow - JMDF 2007
JavaME Development Workflow - JMDF 2007JavaME Development Workflow - JMDF 2007
JavaME Development Workflow - JMDF 2007Edoardo Schepis
 
Mobile operating system..
Mobile operating system..Mobile operating system..
Mobile operating system..Aashish Uppal
 
City search documentation
City search documentationCity search documentation
City search documentationRajesh Varanasi
 

Semelhante a Intro to Java ME and Asha Platform (20)

Introduction to Java ME
Introduction to Java MEIntroduction to Java ME
Introduction to Java ME
 
Symbian os
Symbian osSymbian os
Symbian os
 
01 java 2 micro edition
01 java 2 micro edition01 java 2 micro edition
01 java 2 micro edition
 
Java1 in mumbai
Java1 in mumbaiJava1 in mumbai
Java1 in mumbai
 
Mobile Java
Mobile JavaMobile Java
Mobile Java
 
Game Development for Nokia Asha Devices with Java ME #1
Game Development for Nokia Asha Devices with Java ME #1Game Development for Nokia Asha Devices with Java ME #1
Game Development for Nokia Asha Devices with Java ME #1
 
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
 
JavaAndNetBeans.pdf
JavaAndNetBeans.pdfJavaAndNetBeans.pdf
JavaAndNetBeans.pdf
 
Java withrealworldtechnology
Java withrealworldtechnologyJava withrealworldtechnology
Java withrealworldtechnology
 
Prezentare 1 - LTM
Prezentare 1 - LTMPrezentare 1 - LTM
Prezentare 1 - LTM
 
Nokia Asha App Development - Part 1
Nokia Asha App Development - Part 1Nokia Asha App Development - Part 1
Nokia Asha App Development - Part 1
 
Android architechture
Android architechtureAndroid architechture
Android architechture
 
J2ME mobile app development
J2ME mobile app developmentJ2ME mobile app development
J2ME mobile app development
 
Ben Pashkoff - java embedded - 24mai2011
Ben Pashkoff - java embedded - 24mai2011Ben Pashkoff - java embedded - 24mai2011
Ben Pashkoff - java embedded - 24mai2011
 
JavaME Development Workflow - JMDF 2007
JavaME Development Workflow - JMDF 2007JavaME Development Workflow - JMDF 2007
JavaME Development Workflow - JMDF 2007
 
Java ME MSA
Java ME MSAJava ME MSA
Java ME MSA
 
J2 me 1
J2 me 1J2 me 1
J2 me 1
 
Android Introduction
Android IntroductionAndroid Introduction
Android Introduction
 
Mobile operating system..
Mobile operating system..Mobile operating system..
Mobile operating system..
 
City search documentation
City search documentationCity search documentation
City search documentation
 

Mais de Jussi Pohjolainen

libGDX: Screens, Fonts and Preferences
libGDX: Screens, Fonts and PreferenceslibGDX: Screens, Fonts and Preferences
libGDX: Screens, Fonts and PreferencesJussi Pohjolainen
 
libGDX: User Input and Frame by Frame Animation
libGDX: User Input and Frame by Frame AnimationlibGDX: User Input and Frame by Frame Animation
libGDX: User Input and Frame by Frame AnimationJussi Pohjolainen
 
Intro to Building Android Games using libGDX
Intro to Building Android Games using libGDXIntro to Building Android Games using libGDX
Intro to Building Android Games using libGDXJussi Pohjolainen
 
Advanced JavaScript Development
Advanced JavaScript DevelopmentAdvanced JavaScript Development
Advanced JavaScript DevelopmentJussi Pohjolainen
 
libGDX: Simple Frame Animation
libGDX: Simple Frame AnimationlibGDX: Simple Frame Animation
libGDX: Simple Frame AnimationJussi Pohjolainen
 
libGDX: Simple Frame Animation
libGDX: Simple Frame AnimationlibGDX: Simple Frame Animation
libGDX: Simple Frame AnimationJussi Pohjolainen
 
Implementing a Simple Game using libGDX
Implementing a Simple Game using libGDXImplementing a Simple Game using libGDX
Implementing a Simple Game using libGDXJussi Pohjolainen
 
Building Android games using LibGDX
Building Android games using LibGDXBuilding Android games using LibGDX
Building Android games using LibGDXJussi Pohjolainen
 
Creating Asha Games: Game Pausing, Orientation, Sensors and Gestures
Creating Asha Games: Game Pausing, Orientation, Sensors and GesturesCreating Asha Games: Game Pausing, Orientation, Sensors and Gestures
Creating Asha Games: Game Pausing, Orientation, Sensors and GesturesJussi Pohjolainen
 
Creating Games for Asha - platform
Creating Games for Asha - platformCreating Games for Asha - platform
Creating Games for Asha - platformJussi Pohjolainen
 

Mais de Jussi Pohjolainen (20)

Moved to Speakerdeck
Moved to SpeakerdeckMoved to Speakerdeck
Moved to Speakerdeck
 
Box2D and libGDX
Box2D and libGDXBox2D and libGDX
Box2D and libGDX
 
libGDX: Screens, Fonts and Preferences
libGDX: Screens, Fonts and PreferenceslibGDX: Screens, Fonts and Preferences
libGDX: Screens, Fonts and Preferences
 
libGDX: Tiled Maps
libGDX: Tiled MapslibGDX: Tiled Maps
libGDX: Tiled Maps
 
libGDX: User Input and Frame by Frame Animation
libGDX: User Input and Frame by Frame AnimationlibGDX: User Input and Frame by Frame Animation
libGDX: User Input and Frame by Frame Animation
 
Intro to Building Android Games using libGDX
Intro to Building Android Games using libGDXIntro to Building Android Games using libGDX
Intro to Building Android Games using libGDX
 
Advanced JavaScript Development
Advanced JavaScript DevelopmentAdvanced JavaScript Development
Advanced JavaScript Development
 
Introduction to JavaScript
Introduction to JavaScriptIntroduction to JavaScript
Introduction to JavaScript
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
 
libGDX: Scene2D
libGDX: Scene2DlibGDX: Scene2D
libGDX: Scene2D
 
libGDX: Simple Frame Animation
libGDX: Simple Frame AnimationlibGDX: Simple Frame Animation
libGDX: Simple Frame Animation
 
libGDX: Simple Frame Animation
libGDX: Simple Frame AnimationlibGDX: Simple Frame Animation
libGDX: Simple Frame Animation
 
libGDX: User Input
libGDX: User InputlibGDX: User Input
libGDX: User Input
 
Implementing a Simple Game using libGDX
Implementing a Simple Game using libGDXImplementing a Simple Game using libGDX
Implementing a Simple Game using libGDX
 
Building Android games using LibGDX
Building Android games using LibGDXBuilding Android games using LibGDX
Building Android games using LibGDX
 
Android Threading
Android ThreadingAndroid Threading
Android Threading
 
Creating Asha Games: Game Pausing, Orientation, Sensors and Gestures
Creating Asha Games: Game Pausing, Orientation, Sensors and GesturesCreating Asha Games: Game Pausing, Orientation, Sensors and Gestures
Creating Asha Games: Game Pausing, Orientation, Sensors and Gestures
 
Creating Games for Asha - platform
Creating Games for Asha - platformCreating Games for Asha - platform
Creating Games for Asha - platform
 
Intro to Asha UI
Intro to Asha UIIntro to Asha UI
Intro to Asha UI
 
Intro to PhoneGap
Intro to PhoneGapIntro to PhoneGap
Intro to PhoneGap
 

Último

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 

Último (20)

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

Intro to Java ME and Asha Platform

  • 1. Introduc)on  to  Asha  Pla1orm   and  Java  ME   Jussi  Pohjolainen   Tampere  University  of  Applied  Sciences  
  • 2. About  Java  ME   •  Java  ME  (J2ME  is  older  name..)  is  the  world’s   most  widespread  mobile  applica1on   pla3orm   •  Developed  by  Sun  Microsystems  and  bought   by  Oracle      
  • 3. Why?   •  So  why?  Poten1al  market  reach!   •  It’s  possible  to  create  awesome  apps  with  new   really  powerful  APIs:  GPS,  Sensors,  3D   Graphics,  Touch  etc..   •  Hardware  geQng  more  powerful  and  less   expensive  
  • 4. Some  history   •  Java  ME  (J2ME)  was  targeted  to  be  cross-­‐pla1orm  solu)on  for   mobile   •  Mobile  opera)ng  system  must  support  Java  for  enabling  Java   apps   •  Available  opera)ng  systems   –  Symbian  and  it's  varia)ons:  S60,  S90   –  S40   •  Symbian  is  now  dead  and  S40  has  evolved  to  Asha   •  Today:  Java  ME  is  available  for  Asha  (forget  about  the  cross-­‐ pla1orm)  
  • 5. Asha  Pla1orm   •  Asha  series  is  a  range  for  low-­‐end  or  feature   phones  produced  by  Nokia  (and  soon  MS)   •  First  genera1on  Asha  phones  (S40  OS)   –  200  and  300  series   •  Second  genera1on  Asha  phones  (Asha   Pla1orm)   –  500  series  
  • 6. Asha  Pla1orm   •  UI  similari)es  from  Symbian  and  Meego  (N9)   –  Swipe,  fast  lane..   •  Phones   –  Asha  500,  501,  502  and  503   •  Apps  are  wri]en  in  Java  ME  or  Web  apps   –  Powered  by  gecko  rendering  engine  (Nokia   Browser)  
  • 7. Lot  of  possibili)es   •  •  •  •  •  •  •  •  •  Here  API   Gestures  API   Image  Scaling  API   Contact  API   Web  Services  API   Loca)on  API   Mobile  Sensor  API   Bluetooth  API   3D  Graphics  API   •  •  •  •  •  •  Internaliza)on  API   File  and  PIM  API   Mobile  Media  API   Messaging  API   Share  API   VoIP  API  
  • 9. Java  Pla1orms   •  Java  Standard  Edi1on  (Java  SE)   –  Designed  for  desktop  computers   –  Runs  on  top  of  OS  X,  Linux,  Windows  …   •  Java  Enterprise  Edi1on  (Java  EE)   –  Mul)user,  enterprise-­‐wide  applica)ons   –  Based  on  J2SE  +  several  APIs  for  server-­‐side   compu)ng   •  Java  Micro  Edi1on  (Java  ME)   –  For  )ny,  small  and  resource-­‐constrained  devices  
  • 10. Java  Edi)ons   Our  course   concentrates   on  this   Op)onal  Packages   Java  EE   Java  SE   Java  ME   Personal  Profile   Op)onal  Packages   Founda)on  Profile   MIDP   CDC   CLDC   Java  Virtual  Machine   KVM  
  • 11. JCP  and  JSR   •  Java  Community  Process,  JCP,  is  a  formalized   process  which  creates  defini1ons  of  future   versions  and  features  of  the  Java  pla1orm.   •  These  defini)ons  are  called  Java  Specifica)on   Requests,  JSR   •  JSR  is  a  formal  document  that  describes   proposed  specifica)on  and  technology   •  There  are  lot  of  JSRs.   –  h]ps://jcp.org/ja/jsr/all  
  • 12. Java  ME   Java  Me   Op)onal  Packages   Personal  Profile   Op)onal  Packages   Founda)on  Profile   Mobile  Informa)on  Device  Profile   (MIDP)   Connected  Device  Configura)on     (CLC)   Connected  Limited  Device   Configura)on  (CLDC)   JVM   KVM  
  • 13. Kilo  Virtual  Machine   •  KVM  is  similar  to  JVM,  runs  apps  wri]en  in   Java  –  language   •  KVM  is  used  in  cell  phones,  where  JVM  is  used   on  computers   •  Op)mized  for  small  size   •  More  info  about  KVM   –  h]p://www.oracle.com/technetwork/java/ javame-­‐old/kvmwp-­‐150240.pdf  
  • 14. Java  ME   Java  Me   Op)onal  Packages   Personal  Profile   Op)onal  Packages   Founda)on  Profile   Mobile  Informa)on  Device  Profile   (MIDP)   Connected  Device  Configura1on     (CLC)   Connected  Limited  Device   Configura1on  (CLDC)   JVM   KVM  
  • 15. Configura)ons:  CLDC   •  CLDC  (JSR  139)   –  Small  wireless  devices  with  intermiRent  network   connec)ons   –  Low  power  consump)on   –  Phones,  Pagers,  Bar  code  scanners..   •  CDC  (JSR  36)   –  Larger  Devices  with  a  robust  network  connec)on   –  Set  top  boxes,  Internet  appliances  
  • 16. CDC  -­‐  CLDC   smaller   larger   Pagers                    Mobile  Phones                      PDAs                        Car  Naviga)on  Systems                      Internet  appliances                        Set-­‐top  Boxes   Connected  Limited  Device  Configura1on   (CLDC)   Connected  Device  Configura1on     (CDC)  
  • 17. CLDC  Func)onality   •  •  •  •  •  Subset  of  Java  language     Subset  of  core  Java  SE  libraries   Provides  basic  input  and  output   Provides  basic  networking  support   Security  
  • 18. CLDC  Libraries   •  CLDC  has  37  common  classes  from  Java  SE   –  java.lang:  Boolean,  Byte,  Integer,  Long,  String…   –  java.u1l:  Calendar,  Date,  Enumera)on,   Hashtable..   –  java.io:  InputStream,  OutputStream…   •  CLDC  1.0  does  not  have  floa)ng  point  support   •  CLDC  1.1  supports  floa)ng  point  
  • 19. Java  ME   Java  Me   Op)onal  Packages   Personal  Profile   Op)onal  Packages   Founda)on  Profile   Mobile  Informa1on  Device  Profile   (MIDP)   Connected  Device  Configura)on     (CLC)   Connected  Limited  Device   Configura)on  (CLDC)   JVM   KVM  
  • 20. The  Mobile  Informa)on  Device  Profile   (MIDP)   •  Specifica)on  for  wireless  devices   •  Provides  general  Java  libraries  for  developing   apps  for  wireless  devices   •  Versions:  MIDP  1.0  (JSR  37)  and  MIDP  2.x  (JSR   118)   •  MIDP  3.0  (JSR  271)  also  available  but  not  not   implemented  in  any  phones    
  • 21. MIDP  Differences   •  MIDP  1.0   –  Limited  graphics  and  sound   –  Only  HTTP,  no  Sockets   •  MIDP  2.X   –  Game  API   –  Network  and  Mul)media  support   •  MIDP  3.0   –  Background  MIDlets,  Improved  UI,  Localisa)on..  
  • 22. MIDP  Soqware  Components   MIDP  Java  App     Device  Specific   Java  App     Op)onal  Java   Packages   Op)onal  Device   Specific  Packages   Na)ve  Applica)on   MIDP   CLDC   Device  Opera)ng  System  
  • 23. Java  ME   Java  Me   Op)onal  Packages   Personal  Profile   Op1onal  Packages   Founda)on  Profile   Mobile  Informa)on  Device  Profile   (MIDP)   Connected  Device  Configura)on     (CLC)   Connected  Limited  Device   Configura)on  (CLDC)   JVM   KVM  
  • 24. Op)onal  Packages,  JSRs   File  Connec)on  and  PIM   Bluetooth   Wireless  Messaging  API  (WMA)   Mobile  Media  API  (MMAPI)   Web  Services   Security  and  Trust  Services   Loca)on  API   SIP  API   Mobile  3D  Graphics   Java  Technology  for  the  Wireless   Industry  (JTWI)   •  Wireless  Messaging  2.0  (WMA)   •  •  •  •  •  •  •  •  •  •  •  •  •  •  •  •  •  •  •  Content  Handler  API   SVG  1.0   Payment  API   Advanced  Mul)media   Supplements  (AMMS)   Mobile  Interna)onaliza)on  API   Java  Bindings  for  the  OpenGL  ES   API   Mobile  Service  Architecture   Mobile  Sensor  API   SVG  2.0  
  • 25. Problems   •  •  •  •  Different  screen  sizes   Bugs  in  phones   Performance   Fragmenta)on,  JSRs  
  • 27. How  to  Build  MIDlets?   •  MIDlet  =  MIDP  Applica)on   •  If  Java  SE  is  familiar,  MIDlet  development  is   easy   •  Part  of  the  API  works  exactly  like  Java  SE   •  Building  process  is  different  
  • 28. Example  MIDlet   import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class MyMidlet extends MIDlet { public MyMidlet() { } protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { } protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { } }
  • 29. Lifecycle:  startApp •  startApp  –  method  is  called  when  MIDlet  has   been  started  (aqer  constructor)   –  Applica1on  Management  SoVware  (AMS)  calls   the  method   –  Aqer  the  method,  the  MIDlet  is  in  Ac1vate  state   •  Method  is  called  only  once  in  Asha  pla1orm   •  What  to  do  here?   –  Acquire  needed  resources    
  • 30. Lifecycle:  pauseApp •  pauseApp  –  method  is  called  when  MIDlet  is   moved  to  paused  state   –  In  S40:  when  phone  rings   –  In  Asha:  pauseApp  is  never  called!   •  What  to  do  here   –  In  S40:  release  any  resources   –  In  Asha:  don't  do  anything.  You  must  implement   the  method  (leave  it  blank)  
  • 31. Lifecycle:  destroyApp •  destroyApp  –  method  is  called  when  MIDlet  is   moved  to  destroyed  state  (app  terminates)   –  Five  seconds  1me  to  do  cleaning   •  When  this  method  is  called?   –  Leaving  app  (back-­‐bu]on,  swipe)   –  AMS   –  Removing  memory  card   –  Out  of  memory  or  excep)on  in  app   •  What  to  do  here   –  Release  resources  
  • 32. boolean unconditional import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class MyMidlet extends MIDlet { protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { if(unconditional) { // You must cleanup and release resources, we // are going to exit! } else { // You may cancel the exit request by throwing // a MIDletStateChangeException! } } }
  • 33. MIDlet’s  Life  Cycle   Constructor destroyApp() Paused   Destroyed   pauseApp() startApp() Ac)ve  
  • 34. Applica)on  Manager   •  Applica1on  Manager  controls  all  the  methods   in  the  previous  slide   •  You  can  try  to  change  the  state  by  using   methods  like:   –  void notifyDestroyed()! –  notifyPaused()! –  resumeRequest()!
  • 35. Exi)ng  using  no)fyDestroyed()   import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class MyMidlet extends MIDlet { protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { cleanUpResources(); } protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { cleanUpResources(); notifyDestroyed(); // destroyApp is NOT called! } private void cleanUpResources() { // .. } }
  • 36. HOW  TO  BUILD  MIDLETS?  
  • 37. Building  Process   1.  2.  3.  4.  5.  Compile   Preverify   Compress   Create  JAD-­‐file   Upload  to  client  
  • 38. 1.  Compile   •  Compile  a  MIDlet:   –  javac –classpath midp21.jar;cldc11.jar MyApp.java •  Use  now  base  classes  from  Java  ME!   •  midp  classes?   –  C:NokiaDevicesNokia_Asha_SDK_1_1lib •  Aqer  the  compile,  one  must  preverify  the   result:  
  • 39. 2.  Preverify   •  It  is  checked  in  the  preverifing  process  that  your  MIDlet  does   not  harm  the  client-­‐machine.   •  In  Java  SE  this  checking  is  done  by  JVM.  KVM  does  not  have   this  kind  of  security  checking!   •  Security  checking  is  done  in  two  parts   –  Preverify  before  sending  MIDlet  to  the  client  machine   –  Client  machines  own  check   •  Command  line:   –  preverify –classpath .; midp classes –d . Midlet! •  Preverify  loca1on?   –  C:NokiaDevicesNokia_Asha_SDK_1_1bin!
  • 40. 3.  Compress   •  Aqer  the  MIDlet  is  compiled  and  preverified,   you  must  compress  all  the  classes  (and   resources)  into  one  jar-­‐file.   •  Jar-­‐file  contains  also  MANIFEST.MF  -­‐  file,   which  describes  the  contents  of  the  jar-­‐file.     •  Compressing  with  the  jar-­‐tool:   –  jar cvmf MANIFEST.MF MIDlet.jar MIDlet.class!
  • 41. Example  of  Manifest  file   MIDlet-1: MyMIDlet, MyMIDlet.png, MyMIDlet! MIDlet-Name: MyMIDlet! MIDlet-Vendor: Jussi Pohjolainen! MIDlet-Version: 1.0! MicroEdition-Configuration: CLDC-1.1! MicroEdition-Profile: MIDP-2.1!
  • 42. 4.  Create  JAD  -­‐  file   •  Java  Applica)on  Descriptor  file  describes  the   contents  of  MIDlet.   •  JAD-­‐file  is  used  so  that  the  client  machine  can   have  informa)on  about  the  soqware  before   installing  it.  
  • 43. Example  of  JAD-­‐file   MIDlet-1: MyMidlet, MyMidlet.png, MyMidlet! MIDlet-Jar-Size: 1056 // CHECK THIS!! MIDlet-Jar-URL: MyMidlet.jar! MIDlet-Name: MyMidlet! MIDlet-Vendor: Unknown! MIDlet-Version: 1.0! MicroEdition-Configuration: CLDC-1.1! MicroEdition-Profile: MIDP-2.1!
  • 44. Distribu)on   Preverified  classes   Resource  files   Manifest  file   jar   Jar-­‐file   Jad-­‐file   Mobile   Phone  
  • 45. Opening  in  Emulator   •  You  can  start  the   emulator  from   command  line   –  Nokia_Asha_SDK_1_1_e m.exe -classpath "MyMidlet.jar" "MyMidlet.jad"
  • 46. Deploying  to  Phone   •  Transfer  the  .jad   and  .jar  to  phone  using   –  bluetooth  or   –  mass  storage  
  • 47. In  Conclusion   •  Mobile  app  must   –  extend  MIDlet  class  which  control's  the  lifecycle   –  package  all  files  in  JAR     •  include  MANIFEST.MF  file  contained  in  JAR  file   –  include  a  Java  Applica)on  Descriptor  (JAD)  file   –  have  all  .class  preverified  before  deployment