RIM is written in Java, even the operating system. Applications are written as Java J2ME (Java 2 Micro Edition). If you want your application to be portable and run on all Java-powered Blackberry, Nokia, Motorola, SonyEriccson phones, you want to be compliant with MIDP 1.0 (rather than newer MIDP).
The two main big-company resources for this development are: SUN J2ME Developers Blackberry Developers
However, if you want the extra Blackberry API's, you may need your application to be signed by RIM. Example: Being able to force application to foreground, for displaying notifications (i.e. incoming instant messages), etc. For Blackberry-specific extensions to J2ME / MIDP1.0 you will need to visit RIM developer site.
If you need to write assembly, there are Java bytecode assembly languages available, but it's a bit of an arcane art, and probably very difficult to package in J2ME format. To the best of my knowledge, nobody has written bytecode assembler for Blackberry, but I could be wrong.