Developer Zone

- home
- faq
- login
- register
- contact us
- danger.com

hiptop Developer FAQ

If you're new to hiptop development, this FAQ is for you. It has answers to all of the common questions about developing for our platform, and helps you learn how you can be a part of the experience--either as a hobbyist or as a professional.

Table of Contents

Introduction to hiptop Development
What programming language do I use?
What is required to get started with hiptop development?
But isn't the hiptop a J2ME device?
Why don't I need Sun's Java Wireless Toolkit for J2ME development?
Why are there two API's for hiptop development?
Should I use J2ME or the hiptop API?
What's in the hiptop SDK?
What are the supported development environments?
How do I compile hiptop applications?
Can I use an IDE?
What sort of documentation is there for the hiptop API?
How do I test my application on the device?
How do I distribute my application to users?
What if I have questions about hiptop development?
Okay, so where do I start?

Java on the hiptop
What operating system and Java Virtual Machine (JVM) are you using?
Do you support mobile HotSpot (aka "Monty")?
Does your JVM include a JIT, or does it use Jazelle?
How can you claim that you have good performance if you don't use a JIT or Jazelle?
How big can my application be?
How much RAM is available for my application?
What are the maximum heap and stack sizes?
What integration is available with native apps and data?
Does your SDK include an emulator?

J2ME on the hiptop
When will the hiptop2 support J2ME?
What are the benefits of using J2ME (other than leveraging existing code)?
How much porting is required to deploy a MIDlet on a hiptop?
Will I need to package my J2ME application for the PDM differently than the current process?
How are the various input devices accessed in J2ME? (e.g. scroll wheel, directional pad)
Will on-device debugging be available for J2ME apps under v2.3?
What sort of audio functionality can MIDP applications use?
Why are you only CLDC/MIDP compliant? Will you meet requirements for JTWI? (aka Java Technology for the Wireless Industry, or JSR 185).
Has Danger considered implementing JSR xxx (fill in your favorite JSR here)?
Has Danger considered supporting CDC instead of CLDC?
How does your MIDP implementation work with the hiptop API (aka danger.*)?
What are the RMS or file system restrictions? (# of files, file size, etc.)
What is the submission and approval process for my J2ME applications?
How will my application appear to end users?
What is the maximum .jar size or the maximum size of a MIDlet Suite?

Publishing Your Application
What distribution options are there for my hiptop application?
Are there any alternative distribution mechanisms?
Are there any standard guidelines for applications to follow?
How do applications get approved for the PDM?
What happens to my application once I've submitted it?
When will I receive a response from Danger once my application has been submitted?
Should I focus my development efforts on the hiptop2 or on previous devices such as the original color hiptop?
Does the hiptop model support vertical applications?
What types of applications are you looking for?

Developer Keys
What is a developer key?
What is the intended use of the developer key?
Do I need a developer key to develop hiptop applications?
Do I need to be actively pursuing catalog distribution to be approved for a developer key?
How do I get approved for developer keys?


Glossary


Introduction to hiptop Development

What programming language do I use?
All hiptop development is done using the Java programming language.

What is required to get started with hiptop development?
All hiptop application development (even J2ME development) is done using the hiptop SDK running under Sun's J2SE JDK. At the bare minimum you need Sun's J2SE JDK (1.4+), as well as a copy of the hiptop SDK.

But isn't the hiptop a J2ME device?
While the 2.3 version of the hiptop OS does support J2ME applications, the native API for the device is still a subset of J2SE with our own extensions.

Why don't I need Sun's Java Wireless Toolkit for J2ME development?
While there is not necessarily any harm in also having the Wireless Toolkit installed, the hiptop SDK already contains our device's implementation of the base J2ME classes.

Why are there two API's for hiptop development?
The hiptop API is specially crafted for hiptop devices, and allows you to create applications that take full advantage of hiptop-specific functionality. In the interests of standards compliance we've also embraced the J2ME specification by layering it on top of the hiptop API, allowing J2ME developers to leverage their existing code on our platform.

Should I use J2ME or the hiptop API?
That depends on your goal. Using the hiptop API will produce applications with a distinct hiptop flavor, but adhering to the J2ME specifications will allow you to more easily make your application available on other platforms.

If you're just starting out (even if you're already familiar with J2ME), we encourage you check out the hiptop API. The tight integration with our hardware and backing service makes for a seamless experience, and commonly difficult tasks become dead simple.

What's in the hiptop SDK?
The hiptop SDK contains a device simulator, OS libraries, proprietary tools and a set of example applications.

What are the supported development environments?
Windows, Linux and Mac OS X. The hiptop SDK contains versions of our tools for each.

How do I compile hiptop applications?
Compiling a hiptop application requires a number of steps, so the examples in the hiptop SDK use Apache Ant (1.6+) as a build tool. With this installed, compiling a hiptop application becomes as easy as typing ant build. Compiling and running the application in the simulator is accomplished with ant build-n-run or just ant (since build-n-run is the default).

Can I use an IDE?
Definitely. Our SDK works equally well on the command-line as in an IDE. Members of our developer community have contributed some great starter guides for various Java IDE's over in the developer forums.

What sort of documentation is there for the hiptop API?
Javadoc for the hiptop API and other platform information is available on our documentation page. If you're interested in developing J2ME applications for the hiptop, we recommend Sun's J2ME documentation.

How do I test my application on the device?
By loading a developer key file onto your device. The presence of this file on the device lets your hiptop's OS know that this is a developer device, and that it should allow the installation of unsigned third-party applications. Danger makes developer keys available to parties involved in development of applications that run on the hiptop platform.

How do I distribute my application to users?
Users access all third-party applications through an on-device catalog called Catalog or Download Fun, depending on the carrier. Behind the scenes, Premium Download Manager (PDM) is the component of the hiptop platform that manages all content provisioning to end users through the device catalog, and facilitates streamlined billing integration with the operator. All purchased content automatically appears on their mobile phone bill, and you get paid a portion of the sales.

What if I have questions about hiptop development?
Lots of answers can be found by searching the site. There is an integrated search box at the top-right of every page. If you can't find an answer there, try posting in our forums. If you have a question about anything business-related, please contact our business development department.

Okay, so where do I start?
Great! Check out the Quick-Start Guide. That'll get you up and compiling quickly. Good luck!


Java on the hiptop

What operating system and Java Virtual Machine (JVM) are you using?
Danger has written its own operating system and JVM for the hiptop. The Operating system has preemptive multitasking and a soft real-time scheduler, and it has been tuned specifically for running our JVM. All end-user applications are written in Java, as is the overwhelming majority of the high-level operating system. Arguably, Danger has the premiere "Java Operating System" on the market today.

Do you support mobile HotSpot (aka "Monty")?
Danger does not license mobile HotSpot or any other JVM from Sun Microsystems. However, our implementation is fully compliant with the J2ME CLDC standard and passes all of the appropriate compatibility tests. Java code originally written for a Sun JVM will run just fine, without modification, on a hiptop.

Does your JVM include a JIT, or does it use Jazelle?
Our implementation currently does not use either of these technologies, although we may take advantage of them in the future. Nonetheless, we feel that the performance of our JVM and class libraries is very good, on par with or exceeding that of the JVM's found on other high-end, mobile devices. Please keep in mind that microbenchmarks are rarely a good indicator of actual application performance.

How can you claim that you have good performance if you don't use a JIT or Jazelle?
We use proprietary, bytecode optimization techniques similar to those used by an optimizing C++ compiler. Although these optimizations cannot be applied dynamically at run-time, in practice they do very well. In addition, our bytecode interpreter is written in hand-coded ARM assembly, and nearly all of our interpreter fits in the 8KB instruction cache on the hiptop's microprocessor.

How big can my application be?
Danger limits all applications to a maximum of 200KB.

How much RAM is available for my application?
The Sidekick has 32MB of RAM. The hiptop OS has up to 20MB of shared heap.

What are the maximum heap and stack sizes?
The stack size on hiptop2 is 6KB. Heap size is limited only by the device's memory. In future products, the stack size will also be unbounded.

What integration is available with native apps and data?
No native applications are supported. All applications must be 100% pure Java.

Does your SDK include an emulator?
The SDK includes a "simulator". Since most of the Danger OS is written in Java, we can run the OS on top of the standard JDK runtime. This makes the simulator platform-independent.


J2ME on the hiptop

When will the hiptop2 support J2ME?
The v2.3 OS will be sent to hiptop2 users via OTA later this summer. Until it is released, we've provided a preview SDK that will allow developers to test their J2ME applications on the hiptop simulator.

What are the benefits of using J2ME (other than leveraging existing code)?
The MIDP API is a subset of the hiptop API. It contains no additional features, but MIDP currently has much better documentation than the hiptop API.

How much porting is required to deploy a MIDlet on a hiptop?
Very little. Despite the rampant J2ME fragmentation in the industry, Danger takes seriously the WORA (Write Once, Run Anywhere) promise of Java. In fact, our MIDP implementation can emulate the screen size of over 100 different J2ME phones, although applications bound for the PDM catalog must be sized to the hiptop screen size to provide the most compelling experience for end-users. And although the hiptop includes a full keyboard, our MIDP implementation can also emulate the more common 12-pad arrangement.

The graphics modification effort required for the hiptop’s screen should be similar to that of any J2ME handset optimization process (with the addition of a few visual elements specific to the hiptop, such as splashscreens and icons).

MIDlets written to the CLDC and MIDP standards should run on a hiptop without modification. Of course, MIDlets that take advantage of vendor-specific APIs, or JSRs that the hiptop does not yet support, will require more effort.

Will I need to package my J2ME application for the PDM differently than the current process?
The PDM packaging process is the same for all hiptop applications--see the PDM submission page for details. Most application authors will want to provide icons and a splash screen that integrate well visually with the hiptop's UI. All apps must have background images that fit the hiptop's native screen size.

How are the various input devices accessed in J2ME? (e.g. scroll wheel, directional pad)
Most of these are mapped to the appropriate high-level Canvas keys: UP, DOWN, LEFT, RIGHT, FIRE, GAME_A, GAME_B, GAME_C, GAME_D. For others, the raw key code will be the same as it would be for a Danger application.

Will on-device debugging be available for J2ME apps under v2.3?
Not at this time, although we have considered implementing this in the future.

What sort of audio functionality can MIDP applications use?
We provide audio playback through the standard javax.microedition.media package. The audio engine MIDP applications get access to is the same one used by the rest of the system; it is a variant of the Beatnik engine, which is a mature MIDI and sample-based engine already widely deployed both on the desktop and in other mobile devices.

Why are you only CLDC/MIDP compliant? Will you meet requirements for JTWI? (aka Java Technology for the Wireless Industry, or JSR 185).
Danger is well aware of the industry support behind JTWI, and its successor, MSA (aka Mobile Services Architecture, or JSR 248). In fact, our J2ME implementation already compiles with several JTWI requirements, such as JPEG support and the security model. We hope to fully support both of these standards in a future platform release. Developers can expect Danger to support JTWI before MSA.

Has Danger considered implementing JSR xxx (fill in your favorite JSR here)?
Danger believes that the JTWI and MSA standardization efforts are the best indicator of which JSRs we should support. We plan to align our software platform with these standards. JTWI includes JSR 120 (Wireless Messaging) and JSR 135 (Mobile Media). The definition of MSA has not been completed.

Has Danger considered supporting CDC instead of CLDC?
Yes, and we have concluded that the vastness of the CDC/FP/PBP (CDC with Foundation Profile and Personal Basis Profile) platform would require a substantial engineering effort. The OMTP Group has chosen to advocate CDC on mobile phones. Danger is an active participant in OMTP.

Any future adoption of CDC will likely align with OMTP's recommendations.

How does your MIDP implementation work with the hiptop API (aka danger.*)?
The hiptop's MIDP implementation is built on top of the hiptop API. Any functionality available in MIDP is also available in danger.*. We believe that developers will be able to freely mix any non-UI APIs. Mixing the UI APIs (javax.microedition.lcdui and danger.ui) is more complicated, and should be avoided in the short term.

What are the RMS or file system restrictions? (# of files, file size, etc.)
There is no direct access to a file system on the hiptop2. There are no restrictions on the number or size of RecordStores. Indeed, the hiptop stores these on the Danger service, providing much better flexibility than any other J2ME device.

Note that apps destined for the PDM will need to observe any limitations outlined in the PDM certification document.

What is the submission and approval process for my J2ME applications?
The application submission and approval process is the same for all hiptop applications. Applications are submitted via the PDM submission form. Your application will be reviewed by Danger, and if there is interest in including the application in the catalog, Danger will notify you.

How will my application appear to end users?
Your application will appear in the PDM master catalog. The structure of the catalog may change slightly from time to time, in such a way that it makes it easier for users to navigate and find what they want. Please also refer to the PDM section of the site.

What is the maximum .jar size or the maximum size of a MIDlet Suite?
Danger limits all applications to a maximum of 200KB.


Publishing Your Application

What distribution options are there for my hiptop application?
Danger's Premium Download Manager (PDM), known to the user as the Catalog or Download Fun (depending on the carrier), is the conduit through which third-party developers can offer the fruits of their labor for purchase by the hiptop userbase. The PDM offers a fully-automated and seamless experience for the end-user, while also freeing the developer from many of the marketing and publishing hassles associated with conventional distribution channels.

Are there any alternative distribution mechanisms?
No, there are currently no plans for this.

Are there any standard guidelines for applications to follow?
Yes. Your application should have wide appeal and must be coded to the standards in the certification checklist. It also should be tested thoroughly by you, and be as bug-free and polished as possible.

How do applications get approved for the PDM?
The Danger distribution model is to offer a menu of technology and content to wireless carriers. Danger provides them with information on all of the relevant content sourced through its developer program. Danger then works with the carrier to craft a commercial offering that best fits their business and market strategy.

What happens to my application once I've submitted it?
Danger reviews catalog submissions regularly. If there is interest in pursuing your submission for commercial distribution, the technical certification process will commence. The certification period takes approximately 2-4 weeks.

During this time period, Danger will provide you with a license agreement detailing the commercial terms for distribution. Once the license agreement is signed by both parties and certification is complete, your content will be eligible for release into the catalogs of our carrier partners.

When will I receive a response from Danger once my application has been submitted?
You will receive a confirmation email from Danger once we have received your application. Additionally, we attempt to further contact parties regardless of application acceptance.

If your application does not fulfill a current need, we will keep it in our application database for the future. Submitting an application to Danger does not guarantee that it will be distributed.

Should I focus my development efforts on the hiptop2 or on previous devices such as the original color hiptop?
We are no longer accepting PDM submissions for the original color hiptop, so all application development should be focused on the hiptop2.

Does the hiptop model support vertical applications?
Vertical applications are loosely defined as applications supporting a specific industry process, and targeted to a specific and relatively small segment of users. Because the hiptop is a consumer-focused device, Danger does not currently cater to the vertical application space. If you'd like to discuss a particular opportunity in this area, please contact our business development group at bizdev@danger.com.

What types of applications are you looking for?
Because of rapidly changing requirements and availability, we cannot publish any sort of list of specifically-desired applications. What we will do is strive to inform the community (using the developer forums) in a timely manner of particular applications or categories that we are not able to accept for any reason.


Developer Keys

What is a developer key?
A developer key is basically a digitally-signed file containing the IMEI of your device. The presence of this file on the device lets your hiptop's OS know that this is a developer device, and that it should allow the installation of unsigned third-party applications.

What is the intended use of the developer key?
As part of the hiptop® Developer Program, Danger makes developer keys available in order to enable on-device testing and debugging of applications.

Do I need a developer key to develop hiptop applications?
No way! You can start developing for the hiptop platform right now by downloading the SDK. All SDKs contain an excellent device simulator that you can use for debugging and testing your applications. In fact, most hiptop developers find it quite cumbersome to use their device for debugging and testing until much later in the development cycle, and use the simulator almost exclusively until then.

Do I need to be actively pursuing catalog distribution to be approved for a developer key?
No. While we would love it if you wrote an application with the intention of distributing it in the catalog, we certainly don't require this of our developer community. All we ask is that you be actively involved in application development on the hiptop platform.

How do I get approved for developer keys?
Complete and submit the developer key application, filling in all applicable fields. Danger will review your application, and evaluate your eligibility to receive a developer key. You will be notified as to whether your application was accepted, and what futher steps (if any) need to be taken.


Glossary

API Application Programming Interface (more)
ARM The processor architecture in the hiptop (more)
CDC Connected Device Configuration (more)
CLDC Connected Limited Device Configuration (more)
HotSpot Sun's primary desktop JVM (more)
IDE Integrated Development Environment (more)
IMEI International Mobile Equipment Identity (more)
J2ME Java 2 Micro Edition (more)
J2SE Java 2 Standard Edition (more)
JAD Java Application Descriptor. This file contains a set of attributes enabling the identification, retrieval, and installation of MIDlets.
JAR Java Archive more)
Jazelle Java technology embedded in the processor (more)
JDK Java Development Kit (more)
JIT Just-In-Time Compiler more)
JSR Java Specification Request (more)
JTWI Java Technology for the Wireless Industry (more)
JVM Java Virtual Machine (more)
MIDI Musical Instrument Digital Interface (more)
MIDlet MIDP Application (more)
MIDP Mobile Information Device Profile (more)
MSA Mobile Services Architecture (more)
OMTP Open Mobile Terminal Platform (more)
OS Operating System (more)
OTA Over-The-Air Update. Refers to a method of receiving software and OS updates wirelessly.
PDM Premium Download Manager. Also known as the Catalog, or Download Fun on T-Mobile.
RAM Random Access Memory more)
RMS Record Management System (more)
SDK Software Development Kit (more)
UI User Interface (more)
WORA Write Once, Run Anywhere (more)
 
Copyright © 2002-2010 Danger, Inc. All rights reserved. (Build 272964)
Terms of Use | Privacy Policy | User Conduct Rules | Developer License

Page generated in 0.2152 seconds.