Preface - Embedded Software -
Recently, mobile phones have added new functions such as media player and digital terrestrial broadcasting ( TV ). As these phones become more highly functional, the development volume of embedded software grows exponentially.
Embedded software is closely coupled to the device's chipset and other electronic components. Therefore, embedded software development requires highly specific skills and knowledge. The development entails a huge amount of man hours, and the resulting software is likely to be "closed".
To correct these inefficient development practices, an open and object-oriented embedded platform is required.
BREW, and mobile Java (MIDP and J2ME) are the solutions the cellular world desperatly needs.
BREW / mobile Java and Embedded Software
Embedded software controls a device's hardware. On a mobile phone, the"hardware" components are liquid crystal displays, sound circuits, etc.
Since embedded software directly controls chipsets and components , generally C or assembler is used for its coding.
Mobile phone software can be divided into two layers. The embedded part is the operating system layer ( dependant on hardware ) and the application layer ( independent of hardware ).
BREW and mobile Java are object-oriented software platforms for the application layer.
Embedded Software | BREW or mobile Java application | |
---|---|---|
Programming Language | Assembler / C | C / C++, Java |
Data structure | Low Level | High Level |
Dependence on specific hardware | Dependent | Independent |
Real time processing | Required | Not required |
BREW and mobile Java
The following table shows the main characteristics of BREW and mobile Java.
BREW | mobile Java | |
---|---|---|
Environment | AEE | Java virtual machine |
OS | REX | Independent of OS |
API | BREW API | Java API |
Language | C/C++ | Java Language |
Boot up speed | Fast | Slow |
Execution speed | Fast | Slow |
Memory management | Need to be conscious | No need to be conscious (Because garbage collection does it automatically) |
Processing strings | Implementation required | Use String class |
Data management | Implementation required | Several collection classes |
*1 Thread | Cooperative / Single Thread |
Preemptive / Multi Thread |
Network | Asynchronous communication | Synchronous communication |
Event handling | Manual | Auto |
Signature | Required | Not required ( some required) |
Security | Verification by Qualcomm or Carrier | Sandbox |
*2 Communication | TCP/IP, UDP, HTTP/HTTPS, FTP, POP/SMTP etc. | HTTP/HTTPS |
GUI | Implementation required | Use GUI componets |
Application Compression | None | JAR Compression |
Profiler | None | Included in SDK |
*1 Network communication is very simple with mobile Java, loop instructions ( while or if ) are used until all data is loaded. BREW uses callbacks for network communication. When some portion of data is received/sent, a message saying that BREW has "succeeded in receiving/sending data" comes in as a callback. Programming with callbacks is more difficult than loop controls, since there is no way of knowing when the events will occur.
*2 POP / SMTP is available through middleware products such as SophiaFramework.