Java 1.3 варварская, и никто не должен страдать от ее унижений. К счастью, есть решение!
Обобщения, перечисления, изменение сигнатуры возврата в переопределениях и почти все, что делает Java пригодным для использования, было введено в Java 1.5. (см. http://en.wikipedia.org/wiki/Java_version_history). К счастью, большая часть java 1.5 была разработана для обеспечения обратной совместимости и не требует изменений JVM / байт-кода. (или, возможно, это было неудачно, поскольку реализация обобщений в Java была намного слабее, чем в C #. просто попробуйте создать универсальный класс со статическими методами / полями, которые используют универсальный параметр)
Эта статья IBM хорошо объясняет фон:
http://www.ibm.com/developerworks/java/library/j-jtp02277.html
Но это сходство JVM позволило создать такие инструменты, как:
http://retrotranslator.sourceforge.net/
Это раздел из моего сборочного файла Ant, который вызывает ретро-переводчик:
< java jar="${transformer.jar.exe}"
fork="true"
classpath="${epic-framework.dir}/tools/retrotranslator-runtime13-1.2.9.jar:${epic-framework.dir}/tools/retrotranslator-runtime-1.2.9.jar"
args="-srcjar ${build.dir}/classes5.jar -target 1.3 -destjar ${build.dir}/classes5to3.jar"
/>
Запустите преобразованный jar-файл через preverify.exe, а затем передайте его в rapc.exe, и у вас будет работающее приложение Blackberry, написанное на Java 1.5.
Редактировать: я пропустил ключевую деталь в своем первоначальном сообщении. В дополнение к Java 1.3 в иерархии классов Blackberry отсутствуют многие классы, которые обычно были бы частью Java SE 1.3 JDK. Сначала вы нажмете StringBuilder - преобразование javac («string» + «otherstr» + «blah blah») в StringBuilder.append («string»). Append («otherstr»). Append («blah blah») , Этот класс не существует на BB, так что вы сломаетесь. Однако у BB есть StringBuffer, поэтому написание адаптера между ними довольно просто. Единственный улов в том, что BB запрещает приложениям добавлять классы в java. *. Это может быть очень эффективно исправлено в процессе сборки: 1) построить приложение на Java 1.5 с java.lang.StringBuilder на пути к классам, 2) преобразовать строковое преобразование java.lang.Stringbuilder (и всего остального в вашей компасной оболочке), чтобы жить в com.mycorp.java.lang.StringBuilder и встроить его в файл JAR. 3) Используйте этот JAR-файл с ретро-переводчиком и ретро-переводчиком, чтобы обновить все ссылки на байт-коды на java.lang.StringBuilder, чтобы они теперь указывали на com.mycorp.java.lang.StringBuilder. Теперь у вас есть java 1.3-совместимый байт-код, который можно запустить на Blackberry.
Если кому-то это интересно, свяжитесь со мной. Я мог бы взглянуть на открытый источник имеющейся у меня библиотеки Compat.