SlideShare a Scribd company logo
1 of 57
iLabs mobile toolbox:  Java ME applications without intolerable pain. Content is available under  Creative Commons, Attribution 3.0 license Describes version 0.53b of the toolkit
iLabs ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Speakers Bjørn Remseth. Cand. Scient. Research scientist at Telenor Research & Innovation.   Bjørn has more than twenty years of  experience as a sysadmin, developer, systems architect and research scientist. Stian Børresen MSc. Ten years experience  in 3D graphics, web, mobile and rich client development. He is currently working as a consultant specializing in mobile application development using java. Else Nordhagen.  Dr. Scient. Research Scientist at Telenor Research & Innovation. More than thirty years of experience with object oriented design and implementation, 3D graphics, theoretical computer science and GUI design (from Smalltalk in  the  late seventies, to JME today).
Outline of this talk: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Why iLabs Toolbox? Øystein Myhre (original author)  with project manager Hilde Lovett En early facebook/gtalk client. ,[object Object],[object Object],[object Object],Current core developers
In short ,[object Object],[object Object]
History so far: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Java  versions
Design goals: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],!Challenged!
Development model ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Example 1: How to make your own app (HelloGUI1). ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],That wasn’t very painful was it?
Example 2: (HelloGui3):
class  HelloGUI3  extends AbstractILabsMidlet  public final  void  initialize() { ApplicationView view = new ApplicationView("Hello GUI 3!"); view.addMenuItem(new ShowSelection("Item 1")); view.addMenuItem(new ShowSelection("Item 2")); view.addMenuItem(new ShowSelection("Item 3")); view.addMenuItem(new ShowSelection("Item 4")); view.setRightSoftbuttonAction(new ExitAction("Exit")); setCanvas(new ViewCanvas(getDisplay(), view)); getCanvas().show(); } User provided Built in
Action that change Canvas: class  ShowSelection  extends  DisplayChangeAction { ShowSelection( final  String label) {  super(label); } protected   void  onExecute() { final  Alert alert = new  Alert("Hello GUI3 alert", "You selected : " + getLabel(), null, AlertType.INFO); alert.setTimeout(Alert.FOREVER); setCurrent(alert, getCanvas()); } }
Boilerplate to get things going: /** * Creates a new instance of HelloGUI3. */ public  HelloGUI3() { }
Important concepts ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
HelloGUI3, hierarchical decomposition ApplicationView Title B ar MenuView PopUpMenu Clock Action 4 Action 3 Action 2 Action 1 SimpleList View
Example 3: OpenMiniChatter ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Cool
OpenMiniChatter – dry run:
OpenMiniChatter - dry run  - use of TabView
Example 4: OpenMiniBlogger ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Cool
Blogger – dry run
What the HTML renderer sees < form   action =“&quot;  id =&quot;cameraform&quot;  method =&quot;post&quot;  enctype =&quot;multipart/form-data&quot;> < object   name =&quot;image_file&quot;  classid = &quot;clsid:1b9982cf-4be8-42dd-9599-d0f6786d128d&quot;    width =&quot;60&quot;    height =&quot;80&quot;> </ object > < input   type =&quot;submit&quot;  name =&quot;update&quot;  value =&quot;Update&quot;/> </ form >   What you see Live camera view
Blogger –  upload and view:
Example 4: OpenMiniBrowser ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Example 4: OpenMiniBrowser public void  initialize()  { mView  =  new  ApplicationView(&quot;Open Minibrowser&quot;); mCanvas  =  new  ViewCanvas(Display.getDisplay(this), mView); mHtmlView  =  new  HtmlView(this);  mView.setMainAreaView(mHtmlView); mHtmlView.setMargins(2, Font.getDefaultFont().charWidth(' ')); mView.addMenuItem(new OpenURLAction(mHtmlView, mHomePage, &quot;Home&quot;)); mView.addMenuItem(new EnterURLAction(mHtmlView, &quot;Open url&quot;)); mView.addMenuItem(new BackUrlAction(mHtmlView, &quot;Back&quot;)); mView.addMenuItem(new ExitAction(&quot;Exit&quot;)); //a clock, displaying hours and seconds. mClock = new Clock(System.currentTimeMillis(), false); mView.addClock(mClock); mView.layout(0, 0, mCanvas.getWidth(), mCanvas.getHeight()); mCanvas.show(); // Start a timer, update the clock once every minute. final Timer timer = new Timer(); timer.scheduleAtFixedRate(new ClockTask(),  MILLIS_IN_ONE_MINUTE, MILLIS_IN_ONE_MINUTE); mHtmlView.open(mHomePage); }
Lessons so far
Lesson I: ,[object Object],[object Object],[object Object]
Where we started - where we ended up: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],JME app. .jad&.jar UI elements .html
J2ME programs vs. server side XML xml & html J2ME App. J2ME Widger App. App. App. Widgets J2ME App. J2ME App. .jad and .jar files .jad&.jar
WIDGER: Widlets through markup  ,[object Object],[object Object],[object Object],[object Object],Documentation :  http:// demo.ilabs.no/widgerdoc/index.php
UngWeb in  Møre og Romsdal  Fylkeskommune
UngeWeb: Widlet for ONE news item:
XML for widlet for one news item: <? xml  version = &quot;1.0&quot;  encoding = &quot;windows-1252&quot; ?> < widlet  ver = &quot;0.2&quot;  id = ”tabbednyhet&quot; > < view  type = &quot;tabs&quot;   id = &quot;main&quot; > < view  type = &quot;panel&quot;   id = &quot;panel1&quot;  title = &quot;Nyhet 1&quot;  icon = &quot;/img/FolderExplorer.png&quot;  show = &quot;true&quot; > < view  type = &quot;web&quot;   id = &quot;web1&quot;  url = &quot;nyhet1.html&quot; ></ view > < action  type = &quot;loadiwg&quot;  label = &quot;Nyheter&quot;  url = &quot;nyheter.iwg&quot;  button = &quot;right&quot; /> </ view > < view  type = &quot;panel&quot;   id = &quot;panel2&quot;  title = &quot;Kommentarer&quot;  icon = &quot;resource://FolderExplorer.png&quot; > < view  type = &quot;web&quot;   id = &quot;web2&quot;  url = &quot;nyhet1_kommentarer.html&quot; ></ view > < action  type = &quot;reloadurl&quot;  label = &quot;Oppdater&quot;  for = &quot;web2&quot;  /> < action  type = &quot;loadiwg&quot;  label = &quot;Nyheter&quot;  url = &quot;nyheter.iwg&quot;  button = &quot;right&quot; /> </ view > < view  type = &quot;panel&quot;   id = &quot;panel3&quot;  title = &quot;Skriv selv&quot;  icon = &quot;resource://BlogView.png&quot; > < view  type = &quot;web&quot;   id = &quot;web3&quot;  url = &quot;nyhet1_skrivSelv.html&quot; ></ view > < action  type = &quot;loadiwg&quot;  label = &quot;Nyheter&quot;  url = &quot;nyheter.iwg&quot;  button = &quot;right&quot; /> </ view > </ view > </ widlet >
Integrate with authoring tools: UngWeb Edit with eZ publish Generates HTML and .iwg Widger
Lesson II: Supporting protocols is  hard ,[object Object],[object Object],[object Object],[object Object],[object Object],Proxy Widger The service server
Two servers and one client: The Twitter Server Widger/Twitter adapter  (in example  demo running on an  iLabs server) Widger running the Twitter Widlet
Widget Twitter dry run: Server side login and formatting using forms and simple html. In this case all pages are created on our server, not twitter s . Saves bytes  and  fixes problems with phone heterogeneity and weaknesses.
Server-side scripting: Advantages and Disadvantages: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
WIDGER: Widgets through markup  ,[object Object],[object Object],[object Object],[object Object],Documentation :  http://demo.ilabs.no/widgerdoc/index.php
Example 5: Browser Widget : <?xml  version=&quot;1.0&quot; encoding =&quot; windows-1252&quot; ?> <widget  ver=&quot;0.2&quot; id=&quot;httpwidget&quot; >  <view  id=&quot;mainview&quot; type=&quot;application&quot; >    <titlebar  title=&quot;Http widget&quot; />    <subview  type=&quot;web&quot; id=&quot;web1&quot;    url=&quot;resource://widgets/httpwidgetindex.html&quot; > </subview>    <action  type=&quot;openurl&quot; label=&quot;Home&quot;  url=&quot;resource://widgets/httpwidgetindex.html&quot;for=&quot;web1&quot; />    <action  type=&quot;enterurl&quot; label=&quot;Open url...&quot;  for=&quot;web1&quot; />    <action  type=&quot;backurl&quot; label=&quot;Back&quot; for=&quot;web1&quot;  button=&quot;right&quot; />    <action  type=&quot;exit&quot; label=&quot;Exit&quot; />    </view> </widget>  Browser specific actions, built into widger Default exit action
Result: v.s: Just another widget Hand crafted  JME application
Example 6: The Twitter Widget
Two servers and one client: Twitter Widget  (in Widger) Widger/Twitter adapter  (in example  demo running on an  iLabs server) Twitter server
Widget Twitter client: <widget> < view  name =&quot;twitterview&quot;   type =&quot;appview&quot; > <titlebar  title=&quot;TwitterME&quot;   bordercolor=&quot;#000000&quot;   bgcolor = &quot;#94E4E8&quot;  textcolor = &quot;#ffffff&quot;/> <view  type =&quot;web&quot;  name =&quot;web1&quot;  url =” [...] /twitterlogin.html&quot;> </view> <action  type =&quot;exit&quot;  label =&quot;Exit&quot;/> </view> </widget> [...] == long url
Widget Twitter client: < widget  ver=&quot;0.2&quot; id=&quot;twitter&quot;>     < view  type=&quot;application&quot; id=&quot;main&quot;>         < titlebar  title=&quot;TwitterME&quot;  …         < subview  type=&quot;web&quot; name=&quot;web1&quot; url=&quot;resource://widgets/twitterlogin.html&quot;> </ subview >        < action  type=&quot;loadiwg&quot;  label=&quot;Widgets&quot; url=&quot;resource://widgets/masterwidget.iwg&quot;/>         < action  type=&quot;exit&quot; label=&quot;Exit&quot;/>      </ view > </ widget >   Colors removed
twitterlogin.html  (Plain old  HTML, no surprises): <!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;>  <html>  <head> <title>Twitter</title>  <meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=windows-1252&quot;> </head> <body> <p><img src=&quot;twitter.png&quot;/></p> <form action=&quot;http://demo.ilabs.no/test/widgets/twitter/twitter.php&quot; id=&quot;signinform&quot; method=&quot;post&quot;> <p><b>Username:</b><br> <input name=&quot;username&quot; type=&quot;text&quot; title=&quot;Enter username&quot; value=&quot;&quot; /> </p> <p> <b>Password:</b><br> <input type='password' name=&quot;pwd&quot; title=&quot;Enter password&quot; value=&quot;&quot; /> </p> <p> <input type=&quot;submit&quot; name=&quot;signin&quot; value=&quot;signin&quot; /> </p> <p><center><img src=&quot;/widger/img/twitterbird.png&quot;/></center></p> <p>Twitter is a service for friends, family, and co-workers to communicate and stay connected through the exchange of quick, frequent answers to one simple question: What are you doing?</p> </form> </body> </html>  Nothing exiting happening here please move on
twitterME user interface  (Plain old  HTML,  one  small surprise): <!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;> <html>  … <textarea name=&quot;status&quot;></textarea> <!-- <INPUT TYPE=&quot;file&quot; name=&quot;image_file&quot; id=&quot;image_file&quot;/> -->  <object name=&quot;image_file&quot; classid=&quot;clsid:1b9982cf-4be8-42dd-9599-d0f6786d128d&quot; width=&quot;60&quot; height=&quot;80&quot;> </object> <input type=&quot;submit&quot; name=&quot;update&quot; value=&quot;Update&quot;/> </form> <hr> </p> <h3>Showing the latest private posts</h3><hr> <p><img src=&quot;http://s3.amazonaws.com/twitter_production/profile_images/55933057/cnn.twitter_normal.gif&quot;/><b>cnnbrk : </b><br>Embattled … Camera input
Widget Twitter dry run: Server side login and formatting using forms and simple html. In this case all pages are created on our server, not twitter s . Saves bytes  and  fixes problems with phone heterogeneity and weaknesses.
Where we are now.. And where to go.. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Tested for devices: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
How do we compare with other toolkits? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Links: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Questions? Please ..    ?
Thank you for your attention
XTRA
Example XML for a browser: <wid let > <view name=&quot;ONM08&quot; type=&quot; appview &quot;> <titlebar title=&quot;ONM 08&quot;  bordercolor=&quot;#FF9900&quot; bgcolor=&quot;#444444&quot; textcolor=&quot;#ffffff&quot;/> <view type=&quot; web &quot; name=&quot;web1&quot; url=&quot;http:// ... .html&quot;></view> <action type=&quot; openurl &quot;  l abel=&quot;Home”   url=&quot;http:// ... .html&quot; control=&quot;web1&quot;/> <action type=&quot; useropenurl &quot;   label=&quot;Open  url&quot; control=&quot;web1&quot;/> <action type=&quot; backurl &quot;   label=&quot;Back&quot;  control=&quot;web1&quot;/> <action type=&quot; exit &quot;  label=&quot;Exit&quot;/> </view> </wid let >

More Related Content

What's hot

Internship Project Report
Internship Project ReportInternship Project Report
Internship Project ReportRishabh Shukla
 
online news portal system
online news portal systemonline news portal system
online news portal systemArman Ahmed
 
Android Capstone Project, Final Deliverable Documentation
Android Capstone Project, Final Deliverable DocumentationAndroid Capstone Project, Final Deliverable Documentation
Android Capstone Project, Final Deliverable DocumentationNate Betz
 
mLearn Project 2012 Full Report
mLearn Project 2012 Full ReportmLearn Project 2012 Full Report
mLearn Project 2012 Full ReportmLearn
 
Automate+ Final Report
Automate+ Final ReportAutomate+ Final Report
Automate+ Final ReportSanat Maharjan
 
Synopsis on android nougat
Synopsis on android nougatSynopsis on android nougat
Synopsis on android nougatPooja Maan
 
Create yourfirstandroidapppdf
Create yourfirstandroidapppdfCreate yourfirstandroidapppdf
Create yourfirstandroidapppdfmurad3003
 
Android quiz application
Android quiz applicationAndroid quiz application
Android quiz applicationMOHDAHMED52
 
Webface - Passion is Innovation
Webface - Passion is InnovationWebface - Passion is Innovation
Webface - Passion is InnovationAbhishek kumar
 
Usability evaluation of the RunKeeper Application
Usability evaluation of the RunKeeper Application Usability evaluation of the RunKeeper Application
Usability evaluation of the RunKeeper Application David O' Connor
 
PROJECT FOR CSE BY TUSHAR DHOOT
PROJECT FOR CSE BY TUSHAR DHOOTPROJECT FOR CSE BY TUSHAR DHOOT
PROJECT FOR CSE BY TUSHAR DHOOTTushar Dhoot
 
Modern JavaScript Applications: Design Patterns
Modern JavaScript Applications: Design PatternsModern JavaScript Applications: Design Patterns
Modern JavaScript Applications: Design PatternsVolodymyr Voytyshyn
 
Java Technical Design Document
Java Technical Design DocumentJava Technical Design Document
Java Technical Design DocumentDeborah Obasogie
 
Critical Analysis of SW Development tool/methodology
Critical Analysis of SW Development tool/methodologyCritical Analysis of SW Development tool/methodology
Critical Analysis of SW Development tool/methodologyDavid O' Connor
 
Project report | Major Project | Engineering | Devansh Koolwal
Project report | Major Project | Engineering | Devansh KoolwalProject report | Major Project | Engineering | Devansh Koolwal
Project report | Major Project | Engineering | Devansh KoolwalDevansh Koolwal
 

What's hot (20)

Internship Project Report
Internship Project ReportInternship Project Report
Internship Project Report
 
.Net presentation
.Net presentation.Net presentation
.Net presentation
 
Newleaks
NewleaksNewleaks
Newleaks
 
online news portal system
online news portal systemonline news portal system
online news portal system
 
Android Capstone Project, Final Deliverable Documentation
Android Capstone Project, Final Deliverable DocumentationAndroid Capstone Project, Final Deliverable Documentation
Android Capstone Project, Final Deliverable Documentation
 
mLearn Project 2012 Full Report
mLearn Project 2012 Full ReportmLearn Project 2012 Full Report
mLearn Project 2012 Full Report
 
12
1212
12
 
Automate+ Final Report
Automate+ Final ReportAutomate+ Final Report
Automate+ Final Report
 
Synopsis on android nougat
Synopsis on android nougatSynopsis on android nougat
Synopsis on android nougat
 
Create yourfirstandroidapppdf
Create yourfirstandroidapppdfCreate yourfirstandroidapppdf
Create yourfirstandroidapppdf
 
Android quiz application
Android quiz applicationAndroid quiz application
Android quiz application
 
Webface - Passion is Innovation
Webface - Passion is InnovationWebface - Passion is Innovation
Webface - Passion is Innovation
 
Usability evaluation of the RunKeeper Application
Usability evaluation of the RunKeeper Application Usability evaluation of the RunKeeper Application
Usability evaluation of the RunKeeper Application
 
PROJECT FOR CSE BY TUSHAR DHOOT
PROJECT FOR CSE BY TUSHAR DHOOTPROJECT FOR CSE BY TUSHAR DHOOT
PROJECT FOR CSE BY TUSHAR DHOOT
 
Modern JavaScript Applications: Design Patterns
Modern JavaScript Applications: Design PatternsModern JavaScript Applications: Design Patterns
Modern JavaScript Applications: Design Patterns
 
Java Technical Design Document
Java Technical Design DocumentJava Technical Design Document
Java Technical Design Document
 
Critical Analysis of SW Development tool/methodology
Critical Analysis of SW Development tool/methodologyCritical Analysis of SW Development tool/methodology
Critical Analysis of SW Development tool/methodology
 
Project report | Major Project | Engineering | Devansh Koolwal
Project report | Major Project | Engineering | Devansh KoolwalProject report | Major Project | Engineering | Devansh Koolwal
Project report | Major Project | Engineering | Devansh Koolwal
 
Stacker's
Stacker'sStacker's
Stacker's
 
Training android
Training androidTraining android
Training android
 

Similar to iLabs Toolbox Javashare 2008

Introduction to Docker and Containers- Learning Simple
Introduction to Docker and Containers- Learning SimpleIntroduction to Docker and Containers- Learning Simple
Introduction to Docker and Containers- Learning SimpleSandeep Hijam
 
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014Gil Irizarry
 
Lecture #3 activities and intents
Lecture #3  activities and intentsLecture #3  activities and intents
Lecture #3 activities and intentsVitali Pekelis
 
CodeCamp general info
CodeCamp general infoCodeCamp general info
CodeCamp general infoTomi Juhola
 
Empower individuals with autism through coding
Empower individuals with autism through codingEmpower individuals with autism through coding
Empower individuals with autism through codinglivecode
 
Java Is A Programming Dialect And Registering Stage Essay
Java Is A Programming Dialect And Registering Stage EssayJava Is A Programming Dialect And Registering Stage Essay
Java Is A Programming Dialect And Registering Stage EssayLiz Sims
 
Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)patrick.t.joyce
 
Platform Independent App design
Platform Independent App designPlatform Independent App design
Platform Independent App designArnab Pradhan
 
Top 7 Angular Best Practices to Organize Your Angular App
Top 7 Angular Best Practices to Organize Your Angular AppTop 7 Angular Best Practices to Organize Your Angular App
Top 7 Angular Best Practices to Organize Your Angular AppKaty Slemon
 
Get started with meteor | designveloper software agency meteor prime partner
Get started with meteor | designveloper software agency   meteor prime partnerGet started with meteor | designveloper software agency   meteor prime partner
Get started with meteor | designveloper software agency meteor prime partnerDesignveloper
 
Best Practices in Mobile Development: Building Your First jQuery Mobile App
Best Practices in Mobile Development: Building Your First jQuery Mobile AppBest Practices in Mobile Development: Building Your First jQuery Mobile App
Best Practices in Mobile Development: Building Your First jQuery Mobile AppSt. Petersburg College
 
PERTEMUAN 3_INTRO TO ANDROID APP DEV.pdf
PERTEMUAN 3_INTRO TO ANDROID APP DEV.pdfPERTEMUAN 3_INTRO TO ANDROID APP DEV.pdf
PERTEMUAN 3_INTRO TO ANDROID APP DEV.pdfarfa442827
 
iOS Development at Scale @Chegg
iOS Development at Scale @CheggiOS Development at Scale @Chegg
iOS Development at Scale @CheggGalOrlanczyk
 
Building a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator PlatformBuilding a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator PlatformAngus Fox
 

Similar to iLabs Toolbox Javashare 2008 (20)

Introduction to Docker and Containers- Learning Simple
Introduction to Docker and Containers- Learning SimpleIntroduction to Docker and Containers- Learning Simple
Introduction to Docker and Containers- Learning Simple
 
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
 
Lecture #3 activities and intents
Lecture #3  activities and intentsLecture #3  activities and intents
Lecture #3 activities and intents
 
VIRTUAL LAB
VIRTUAL LABVIRTUAL LAB
VIRTUAL LAB
 
RakeshKushwaha
RakeshKushwahaRakeshKushwaha
RakeshKushwaha
 
CodeCamp general info
CodeCamp general infoCodeCamp general info
CodeCamp general info
 
Part1
Part1Part1
Part1
 
Empower individuals with autism through coding
Empower individuals with autism through codingEmpower individuals with autism through coding
Empower individuals with autism through coding
 
Java Is A Programming Dialect And Registering Stage Essay
Java Is A Programming Dialect And Registering Stage EssayJava Is A Programming Dialect And Registering Stage Essay
Java Is A Programming Dialect And Registering Stage Essay
 
Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)
 
Platform Independent App design
Platform Independent App designPlatform Independent App design
Platform Independent App design
 
Top 7 Angular Best Practices to Organize Your Angular App
Top 7 Angular Best Practices to Organize Your Angular AppTop 7 Angular Best Practices to Organize Your Angular App
Top 7 Angular Best Practices to Organize Your Angular App
 
Get started with meteor | designveloper software agency meteor prime partner
Get started with meteor | designveloper software agency   meteor prime partnerGet started with meteor | designveloper software agency   meteor prime partner
Get started with meteor | designveloper software agency meteor prime partner
 
Teamwork Presentation
Teamwork PresentationTeamwork Presentation
Teamwork Presentation
 
Best Practices in Mobile Development: Building Your First jQuery Mobile App
Best Practices in Mobile Development: Building Your First jQuery Mobile AppBest Practices in Mobile Development: Building Your First jQuery Mobile App
Best Practices in Mobile Development: Building Your First jQuery Mobile App
 
PERTEMUAN 3_INTRO TO ANDROID APP DEV.pdf
PERTEMUAN 3_INTRO TO ANDROID APP DEV.pdfPERTEMUAN 3_INTRO TO ANDROID APP DEV.pdf
PERTEMUAN 3_INTRO TO ANDROID APP DEV.pdf
 
How to build your own Android App -Step by Step Guide
How to build your own Android App -Step by Step GuideHow to build your own Android App -Step by Step Guide
How to build your own Android App -Step by Step Guide
 
GSOC 2016 mifos
GSOC 2016 mifosGSOC 2016 mifos
GSOC 2016 mifos
 
iOS Development at Scale @Chegg
iOS Development at Scale @CheggiOS Development at Scale @Chegg
iOS Development at Scale @Chegg
 
Building a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator PlatformBuilding a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator Platform
 

Recently uploaded

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 

iLabs Toolbox Javashare 2008

  • 1. iLabs mobile toolbox: Java ME applications without intolerable pain. Content is available under Creative Commons, Attribution 3.0 license Describes version 0.53b of the toolkit
  • 2.
  • 3. Speakers Bjørn Remseth. Cand. Scient. Research scientist at Telenor Research & Innovation.   Bjørn has more than twenty years of  experience as a sysadmin, developer, systems architect and research scientist. Stian Børresen MSc. Ten years experience  in 3D graphics, web, mobile and rich client development. He is currently working as a consultant specializing in mobile application development using java. Else Nordhagen.  Dr. Scient. Research Scientist at Telenor Research & Innovation. More than thirty years of experience with object oriented design and implementation, 3D graphics, theoretical computer science and GUI design (from Smalltalk in  the  late seventies, to JME today).
  • 4.
  • 5.
  • 6.
  • 7.
  • 9.
  • 10.
  • 11.
  • 13. class HelloGUI3 extends AbstractILabsMidlet public final void initialize() { ApplicationView view = new ApplicationView(&quot;Hello GUI 3!&quot;); view.addMenuItem(new ShowSelection(&quot;Item 1&quot;)); view.addMenuItem(new ShowSelection(&quot;Item 2&quot;)); view.addMenuItem(new ShowSelection(&quot;Item 3&quot;)); view.addMenuItem(new ShowSelection(&quot;Item 4&quot;)); view.setRightSoftbuttonAction(new ExitAction(&quot;Exit&quot;)); setCanvas(new ViewCanvas(getDisplay(), view)); getCanvas().show(); } User provided Built in
  • 14. Action that change Canvas: class ShowSelection extends DisplayChangeAction { ShowSelection( final String label) { super(label); } protected void onExecute() { final Alert alert = new Alert(&quot;Hello GUI3 alert&quot;, &quot;You selected : &quot; + getLabel(), null, AlertType.INFO); alert.setTimeout(Alert.FOREVER); setCurrent(alert, getCanvas()); } }
  • 15. Boilerplate to get things going: /** * Creates a new instance of HelloGUI3. */ public HelloGUI3() { }
  • 16.
  • 17. HelloGUI3, hierarchical decomposition ApplicationView Title B ar MenuView PopUpMenu Clock Action 4 Action 3 Action 2 Action 1 SimpleList View
  • 18.
  • 20. OpenMiniChatter - dry run - use of TabView
  • 21.
  • 23. What the HTML renderer sees < form action =“&quot; id =&quot;cameraform&quot; method =&quot;post&quot; enctype =&quot;multipart/form-data&quot;> < object name =&quot;image_file&quot; classid = &quot;clsid:1b9982cf-4be8-42dd-9599-d0f6786d128d&quot; width =&quot;60&quot; height =&quot;80&quot;> </ object > < input type =&quot;submit&quot; name =&quot;update&quot; value =&quot;Update&quot;/> </ form > What you see Live camera view
  • 24. Blogger – upload and view:
  • 25.
  • 26. Example 4: OpenMiniBrowser public void initialize() { mView = new ApplicationView(&quot;Open Minibrowser&quot;); mCanvas = new ViewCanvas(Display.getDisplay(this), mView); mHtmlView = new HtmlView(this); mView.setMainAreaView(mHtmlView); mHtmlView.setMargins(2, Font.getDefaultFont().charWidth(' ')); mView.addMenuItem(new OpenURLAction(mHtmlView, mHomePage, &quot;Home&quot;)); mView.addMenuItem(new EnterURLAction(mHtmlView, &quot;Open url&quot;)); mView.addMenuItem(new BackUrlAction(mHtmlView, &quot;Back&quot;)); mView.addMenuItem(new ExitAction(&quot;Exit&quot;)); //a clock, displaying hours and seconds. mClock = new Clock(System.currentTimeMillis(), false); mView.addClock(mClock); mView.layout(0, 0, mCanvas.getWidth(), mCanvas.getHeight()); mCanvas.show(); // Start a timer, update the clock once every minute. final Timer timer = new Timer(); timer.scheduleAtFixedRate(new ClockTask(), MILLIS_IN_ONE_MINUTE, MILLIS_IN_ONE_MINUTE); mHtmlView.open(mHomePage); }
  • 28.
  • 29.
  • 30. J2ME programs vs. server side XML xml & html J2ME App. J2ME Widger App. App. App. Widgets J2ME App. J2ME App. .jad and .jar files .jad&.jar
  • 31.
  • 32. UngWeb in Møre og Romsdal Fylkeskommune
  • 33. UngeWeb: Widlet for ONE news item:
  • 34. XML for widlet for one news item: <? xml version = &quot;1.0&quot; encoding = &quot;windows-1252&quot; ?> < widlet ver = &quot;0.2&quot; id = ”tabbednyhet&quot; > < view type = &quot;tabs&quot; id = &quot;main&quot; > < view type = &quot;panel&quot; id = &quot;panel1&quot; title = &quot;Nyhet 1&quot; icon = &quot;/img/FolderExplorer.png&quot; show = &quot;true&quot; > < view type = &quot;web&quot; id = &quot;web1&quot; url = &quot;nyhet1.html&quot; ></ view > < action type = &quot;loadiwg&quot; label = &quot;Nyheter&quot; url = &quot;nyheter.iwg&quot; button = &quot;right&quot; /> </ view > < view type = &quot;panel&quot; id = &quot;panel2&quot; title = &quot;Kommentarer&quot; icon = &quot;resource://FolderExplorer.png&quot; > < view type = &quot;web&quot; id = &quot;web2&quot; url = &quot;nyhet1_kommentarer.html&quot; ></ view > < action type = &quot;reloadurl&quot; label = &quot;Oppdater&quot; for = &quot;web2&quot; /> < action type = &quot;loadiwg&quot; label = &quot;Nyheter&quot; url = &quot;nyheter.iwg&quot; button = &quot;right&quot; /> </ view > < view type = &quot;panel&quot; id = &quot;panel3&quot; title = &quot;Skriv selv&quot; icon = &quot;resource://BlogView.png&quot; > < view type = &quot;web&quot; id = &quot;web3&quot; url = &quot;nyhet1_skrivSelv.html&quot; ></ view > < action type = &quot;loadiwg&quot; label = &quot;Nyheter&quot; url = &quot;nyheter.iwg&quot; button = &quot;right&quot; /> </ view > </ view > </ widlet >
  • 35. Integrate with authoring tools: UngWeb Edit with eZ publish Generates HTML and .iwg Widger
  • 36.
  • 37. Two servers and one client: The Twitter Server Widger/Twitter adapter (in example demo running on an iLabs server) Widger running the Twitter Widlet
  • 38. Widget Twitter dry run: Server side login and formatting using forms and simple html. In this case all pages are created on our server, not twitter s . Saves bytes and fixes problems with phone heterogeneity and weaknesses.
  • 39.
  • 40.
  • 41. Example 5: Browser Widget : <?xml version=&quot;1.0&quot; encoding =&quot; windows-1252&quot; ?> <widget ver=&quot;0.2&quot; id=&quot;httpwidget&quot; >  <view id=&quot;mainview&quot; type=&quot;application&quot; >    <titlebar title=&quot;Http widget&quot; />    <subview type=&quot;web&quot; id=&quot;web1&quot; url=&quot;resource://widgets/httpwidgetindex.html&quot; > </subview>    <action type=&quot;openurl&quot; label=&quot;Home&quot; url=&quot;resource://widgets/httpwidgetindex.html&quot;for=&quot;web1&quot; />    <action type=&quot;enterurl&quot; label=&quot;Open url...&quot; for=&quot;web1&quot; />    <action type=&quot;backurl&quot; label=&quot;Back&quot; for=&quot;web1&quot; button=&quot;right&quot; />    <action type=&quot;exit&quot; label=&quot;Exit&quot; />    </view> </widget> Browser specific actions, built into widger Default exit action
  • 42. Result: v.s: Just another widget Hand crafted JME application
  • 43. Example 6: The Twitter Widget
  • 44. Two servers and one client: Twitter Widget (in Widger) Widger/Twitter adapter (in example demo running on an iLabs server) Twitter server
  • 45. Widget Twitter client: <widget> < view name =&quot;twitterview&quot; type =&quot;appview&quot; > <titlebar title=&quot;TwitterME&quot; bordercolor=&quot;#000000&quot; bgcolor = &quot;#94E4E8&quot; textcolor = &quot;#ffffff&quot;/> <view type =&quot;web&quot; name =&quot;web1&quot; url =” [...] /twitterlogin.html&quot;> </view> <action type =&quot;exit&quot; label =&quot;Exit&quot;/> </view> </widget> [...] == long url
  • 46. Widget Twitter client: < widget ver=&quot;0.2&quot; id=&quot;twitter&quot;>     < view type=&quot;application&quot; id=&quot;main&quot;>         < titlebar title=&quot;TwitterME&quot; …         < subview type=&quot;web&quot; name=&quot;web1&quot; url=&quot;resource://widgets/twitterlogin.html&quot;> </ subview >        < action type=&quot;loadiwg&quot; label=&quot;Widgets&quot; url=&quot;resource://widgets/masterwidget.iwg&quot;/>         < action type=&quot;exit&quot; label=&quot;Exit&quot;/>      </ view > </ widget > Colors removed
  • 47. twitterlogin.html (Plain old HTML, no surprises): <!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;> <html> <head> <title>Twitter</title> <meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=windows-1252&quot;> </head> <body> <p><img src=&quot;twitter.png&quot;/></p> <form action=&quot;http://demo.ilabs.no/test/widgets/twitter/twitter.php&quot; id=&quot;signinform&quot; method=&quot;post&quot;> <p><b>Username:</b><br> <input name=&quot;username&quot; type=&quot;text&quot; title=&quot;Enter username&quot; value=&quot;&quot; /> </p> <p> <b>Password:</b><br> <input type='password' name=&quot;pwd&quot; title=&quot;Enter password&quot; value=&quot;&quot; /> </p> <p> <input type=&quot;submit&quot; name=&quot;signin&quot; value=&quot;signin&quot; /> </p> <p><center><img src=&quot;/widger/img/twitterbird.png&quot;/></center></p> <p>Twitter is a service for friends, family, and co-workers to communicate and stay connected through the exchange of quick, frequent answers to one simple question: What are you doing?</p> </form> </body> </html> Nothing exiting happening here please move on
  • 48. twitterME user interface (Plain old HTML, one small surprise): <!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;> <html> … <textarea name=&quot;status&quot;></textarea> <!-- <INPUT TYPE=&quot;file&quot; name=&quot;image_file&quot; id=&quot;image_file&quot;/> --> <object name=&quot;image_file&quot; classid=&quot;clsid:1b9982cf-4be8-42dd-9599-d0f6786d128d&quot; width=&quot;60&quot; height=&quot;80&quot;> </object> <input type=&quot;submit&quot; name=&quot;update&quot; value=&quot;Update&quot;/> </form> <hr> </p> <h3>Showing the latest private posts</h3><hr> <p><img src=&quot;http://s3.amazonaws.com/twitter_production/profile_images/55933057/cnn.twitter_normal.gif&quot;/><b>cnnbrk : </b><br>Embattled … Camera input
  • 49. Widget Twitter dry run: Server side login and formatting using forms and simple html. In this case all pages are created on our server, not twitter s . Saves bytes and fixes problems with phone heterogeneity and weaknesses.
  • 50.
  • 51.
  • 52.
  • 53.
  • 55. Thank you for your attention
  • 56. XTRA
  • 57. Example XML for a browser: <wid let > <view name=&quot;ONM08&quot; type=&quot; appview &quot;> <titlebar title=&quot;ONM 08&quot; bordercolor=&quot;#FF9900&quot; bgcolor=&quot;#444444&quot; textcolor=&quot;#ffffff&quot;/> <view type=&quot; web &quot; name=&quot;web1&quot; url=&quot;http:// ... .html&quot;></view> <action type=&quot; openurl &quot; l abel=&quot;Home” url=&quot;http:// ... .html&quot; control=&quot;web1&quot;/> <action type=&quot; useropenurl &quot; label=&quot;Open url&quot; control=&quot;web1&quot;/> <action type=&quot; backurl &quot; label=&quot;Back&quot; control=&quot;web1&quot;/> <action type=&quot; exit &quot; label=&quot;Exit&quot;/> </view> </wid let >

Editor's Notes

  1. Welcome folks. This presentation will describe a toolkit built on top of the JME software platform for mobile phones. There are several hundre million mobile phones out there with JME software installed, and we would really like more of them to more useful things than playing the same old little games. We would like to see rich applications connecting people doing all the weird things that web pages do today. If powerpoint had been able to include web content, this is the code we would have used to link to our license: &lt;a rel=&amp;quot;license&amp;quot; href=&amp;quot;http://creativecommons.org/licenses/by/3.0/no/&amp;quot;&gt;&lt;img alt=&amp;quot;Creative Commons License&amp;quot; style=&amp;quot;border-width:0&amp;quot; src=&amp;quot;http://i.creativecommons.org/l/by/3.0/no/88x31.png&amp;quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span xmlns:dc=&amp;quot;http://purl.org/dc/elements/1.1/&amp;quot; property=&amp;quot;dc:title&amp;quot;&gt;iLabs mobile toolbox: JME applications without intolerable pain.&lt;/span&gt; by &lt;a xmlns:cc=&amp;quot;http://creativecommons.org/ns#&amp;quot; href=&amp;quot;http://www.ilabs.no/&amp;quot; property=&amp;quot;cc:attributionName&amp;quot; rel=&amp;quot;cc:attributionURL&amp;quot;&gt;Bj&amp;#248;rn Remseth, Else Nordhagen, Stian B&amp;#248;rresen&lt;/a&gt; is licensed under a &lt;a rel=&amp;quot;license&amp;quot; href=&amp;quot;http://creativecommons.org/licenses/by/3.0/no/&amp;quot;&gt;Creative Commons Attribution 3.0 Norway License&lt;/a&gt;.