Fixes for newer GCC.
[SquirrelJME.git] / scope.mkd
blob62972a71e617282e241a90c62d86099000129c11
1 # The Scope of SquirrelJME
3 This document defines the scope of SquirrelJME, classes which are to be
4 supported and ones which are not to be supported. All of the listed
5 specifications are either planned to be implemented, considering, or out
6 of scope for the project.
8 # To Implement
10 These are specifications which are to be implemented to provide the base
11 functionality for SquirrelJME.
13 ## Specifications
15 All of these listed specifications are not obsolete or implemented by other
16 specifications.
18  * **JSR184** -- Mobile 3D Graphics API for J2ME
19    * Needed by a number of games.
20  * **JSR211** -- Content Handler API
21    * Content handling, essentially say you install a JAR that is a media
22      player for MIDI files. Effectively if you "launch" a MIDI, that given JAR
23      will open to view the given content.
24  * **JSR226** -- Scalable 2D Vector Graphics API for J2ME 1.1
25    * SVG Tiny Support.
26    * Relies on LCDUI.
27    * Some classes can just forward calls to MIDP 3.
28  * **JSR238** -- Mobile Internationalization API
29    * Internationalization of text.
30  * **JSR239** -- Java Binding for the OpenGL ES API
31    * Required for some games.
32    * Can be more easily bridged to native OpenGL implementations compared to
33      M3G.
34  * **JSR256** -- Mobile Sensor API 1.2
35    * Sensors are useful.
36  * **JSR271** -- Mobile Information Device Profile 3
37    * Enhances support for MIDlets by adding more features.
38    * MIDP 3.0
39  * **JSR360** -- Connected Limited Device Configuration 8
40    * This is SquirrelJME's target.
41  * **JSR361** -- Java ME Embedded Profile
42    * MEEP 8.
43    * This is SquirrelJME's target.
45 ## Obsolete
47 These specifications are obsolete and are implemented by newer specifications.
49  * **JSR30**/**JSR030** -- J2ME Connected, Limited Device Configuration.
50    * _Implemented by newer JSR_.
51    * CLDC 1.0.
52  * **JSR37**/**JSR037** -- Mobile Information Device Profile for the J2ME 
53    Platform.
54    * _Implemented by newer JSR_.
55    * MIDP 1.0.
56    * Contains the Limited Capability Device User Interface (LCDUI).
57  * **JSR75**/**JSR075** -- PDA Optional Packages for the J2ME Platform
58    * _Implemented by newer JSR_.
59    * Contains file related `javax.microedition.io` classes.
60  * **JSR118** -- Mobile Information Device Profile 2.0
61    * _Implemented by newer JSR_.
62    * MIDP 2.0.
63  * **JSR135** -- Mobile Media API
64    * _Implemented by newer JSR_.
65    * Multimedia.
66    * Implemented by MIDP 3.
67  * **JSR139** -- Connected Limited Device Configuration 1.1
68    * _Implemented by newer JSR_.
69  * **JSR195** -- Information Module Profile Documentation
70    * _Implemented by newer JSR_.
71    * Essentially `HTTPConnection` and MEEP-8's _rms_.
72    * CLDC 1.1.
73  * **JSR228** -- Information Module Profile - Next Generation (IMP-NG)
74    * _Implemented by newer JSR_.
75    * An early ancestor to MIDP 3 and MEEP.
76  * **JSR234** -- Advanced Multimedia Supplements.
77    * _Implemented by newer JSR_.
78    * Included by MIDP 3.
79  * **JSR246** -- Device Management API
80    * _Implemented by newer JSR_.
81    * Included by Java ME 8.
83 ## Non-JSR APIs
85  * Danger HipTop
86  * Docomo DoJa
87  * Docomo Star
88  * JBlend
89  * JPhone
90  * LG MMPP
91  * Mascot Capsule 3D
92  * Nokia
93  * Samsung
94  * Siemens
95  * SKT
96  * SprintPCS
97  * WIPI
98  * Vodafone
100 # Considering
102 Specifications that may be considered for inclusion.
104 ## Specifications
106  * **JSR120** -- Java(TM) Wireless Messaging API Specification 1.1
107    * Supports SMS, USSD, and CBS.
108    * Uses GCF.
109  * **JSR179** -- Location API for J2ME.
110    * Locating of users via GPS and other such things.
111  * **JSR230** -- Data Sync API 0.9
112    * Similar to Palm OS's HotSync.
113  * **JSR257** -- Contactless Communication API
114    * Can be used for RFID and such.
115    * May also include NFC.
117 # Out of Scope
119 These specifications will be not be implement at all. Note however, that
120 although these specifications are out of scope may potentially be provided by
121 third parties libraries.
123 ## Specifications
125  * **JSR062** -- Personal Profile Specification.
126    * Effectively Java SE Embedded.
127  * **JSR066** -- RMI Optional Package Specification Version 1.0.
128    * Requires CDC.
129  * **JSR068** -- J2ME Platform Specification
130    * Withdrawn.
131    * Based on the description it uses "building blocks" which could also be
132      known as profiles. SquirrelJME already has such things in the project
133      system.
134  * **JSR129** -- Personal Basis Profile Specification
135    * Effectively Java SE Embedded.
136  * **JSR169** -- JDBC Optional Package for CDC/Foundation Profile
137    * Requires CDC.
138  * **JSR172** -- J2ME Web Services 1.1
139    * XML is nasty.
140    * Designed for both CLDC and CDC.
141  * **JSR177** -- Security and Trust Services API for J2ME
142    * Some classes are partially handled by other implemented JSRs.
143  * **JSR178** -- Mobile Game API
144    * Withdrawn.
145    * Based on the description it would essentially be a game library with
146      multiplayer APIs, collisions, vector graphics, and a physics engine.
147  * **JSR180** -- SIP API for J2ME.
148    * Voice calls.
149    * Uses GCF.
150    * This is really handled best by third party providers.
151  * **JSR197** -- Generic Connection Framework Optional Package for J2SE.
152    * Not J2ME related, however it is included to reduce confusion.
153    * Makes it so Java SE can use GCF.
154  * **JSR209** -- Advanced Graphics and User Interface.
155    * Effectively Java SE Embedded.
156  * **JSR213** -- Micro WSCI Framework for J2ME.
157    * Rejected.
158    * More nasty XML.
159    * Requires CDC.
160  * **JSR214** -- Micro BPSS for J2ME Devices.
161    * Rejected.
162  * **JSR217** -- Personal Basis Profile 1.1.2
163    * Effectively Java SE Embedded.
164  * **JSR216** -- Personal Profile.
165    * Effectively Java SE Embedded.
166  * **JSR218** -- Connected Device Configuration (CDC) 1.1
167    * CDC.
168  * **JSR219** -- Foundation Profile 1.1.2
169    * Effectively Java SE with Java ME bits.
170  * **JSR229** -- Payment API
171    * Used for monetary transactions.
172  * **JSR232** -- Mobile Operational Management
173    * CDC.
174  * **JSR242** -- Digital Set Top Box Profile - "On Ramp to OCAP"
175    * Effectively java SE.
176    * Has TV stuff.
177  * **JSR272** -- Mobile Broadcast Service API for Handheld Terminals 1.0
178    * This is for broadcast services, which is completley out of scope.
179  * **JSR302** -- Safety Critical Java Technology
180    * Essentially JSR001 for J2ME.
181    * Real time does not always mean safe.
182  * **JSR324** -- On Screen MIDlet API for Java ME
183    * Rejected.
184    * Essentially stuff related to the idle screen, likely similar to MIDP 3.
185  * **JSR325** -- IMS Communication Enablers
186    * Essentially VoIP.
187  * **JSR332** -- Email Client API for Java ME
188    * E-mail.
189  * **JSR927** -- Java TV API 1.1
190    * Depends upon _JSR127_ (Personal Basis Profile).
191    * Precedes _BD-J_.
192    * Includes `javax.tv.xlet`.
193  * **BD-J** -- Blu-ray Disc Java (Blu-ray Disc Association)
194    * Extends on Java TV (includes the Personal Basis Profile).
195    * Not a JSR, standardized by the specified association.
197 # Unknown
199 These are specifications which the understanding of them is not enough to
200 evaluate them completely for inclusion or exclusion.
202 ## Specifications
204  * **JSR190** -- Event Tracking API for J2ME
205    * IPDR/SP? Internet Protocol Detail Record.
206    * Not sure if this is for events that happen (say temperature changes) or
207      if something bad happens to hardware.