Аннотация:
Cтатья призвана помочь обойти типичные ошибки, совершаемые при начале работы с платформой J2ME. Основной упор сделан на вещи, до которых автору пришлось доходить самому. Статья подразумевает знание языка Java и основных пакетов J2SE (java.lang.*, java.util.*, java.io.*), и касается в основном CLDC и MIDP.
...
J>лучше и не начинать J>Google Android рулит
где он рулит? Огласите списко железок в которых он живет. Android пока еще игрушка, а вот j2me вполне себе рабочий инструмент.
Здравствуйте, Аноним, Вы писали:
А>Я чтото делаю не так или нужно еще чтото докачать?
Надо запускать скомпилированную ява-программу, причем нужно указывать не имя файла для запуска, а название класса, который должен находиться в classpath, чтобы виртуальная машина его нашла. Классы из текущего каталога включаются в classpath автоматически. Соответственно, сначала компилируешь (компилятору надо указывать файлы для компиляции) javac HelloWorld.java, потом исполняешь java HelloWorld.
Линковщика как такого в ява нет, при запуске ты указываешь путь до классов (classpath), где ВМ будет искать классы для исполнения.
Вообще, зря ты сразу полез в мобильную яву. Посиди хотя бы пару дней на десктопной. Учитывая твой сишный опыт, в яву врубишься очень быстро. Пока видно, как и что делать ты нашел, но не факт, что понимаешь, для чего все это нужно. Выбери книгу для начинающих из этого списка: http://skipy.ru/useful/books.html, и проблемы с манифестом и запуском исчезнут. skipy.ru вообще стоит почитать.
А> Mobile Java или J2ME говорит — "Виртуальная машина KVM должна быть установлена производителем. Её НЕЛЬЗЯ загрузить и установить самостоятельно."
Неправильно написано. Хотя там и идет речь о мобильных устройствах, но, например, на виндовые КПК KVM устанавливается вполне нормально.
А>Как вообще отлаживать программы на персоналке?
Дебаггером, jdb — консольный, но им пользуются только фанаты. А так ставь понравившуюся IDE (я предпочитаю IntelliJ IDEA), там средства удобной отладки встроены
А>здесь тексты с import javax.microedition.* или microedition есть для персоналок?
Есть, в статье же написано. Надо установить эмулятор мобильного устройства. Например, от SonyEricsson. Все нужные ссылки в статье даны. Но эмуляторы используются для разработки, писать для десктопа программу, которая будет работать в эмуляторе — не лучшее решение, в смысле, это бессмысленно.
А>Что текое ME EE SE?
ME — mobile edition (ява для мобильных устройств), SE — standart edition (ява для обычных компов), EE — enterprise edition (ява для серверов с упором в веб-приложения)
А>С чем начать работу что потом на мобильные устройства переносить?
Как уже говорил, сначала надо освоить десктопную яву. Для мобил надо писать отдельное приложение. Перенести удастся только базовые вещи. В мобильной яве только небольшая часть самых основных классов пересекается с обычной явой.
А>Но мне полный flow control не нужен, нужно только читать, uart можно открыть как файл, или еще както? Можно ли найти чтение uart на мобильных платформах?
В мобильной яве для работы с любым внешним ресурсом используется Connection для соединения и InputStream и OutputStream для чтения/записи (есть специализированные классы-наследники для разных типов соединений). Получить соединение для уарта можно через что-то типа Connector.open( "comm:0;baudrate=9600" ); Точную строку урла для соединения надо смотреть в документации от устройства, для которого пишешь. Некоторые устройства могут вообще не поддерживать работу с ком-портами.
В стандартной яве для каждого типа соединения используется свой класс или пакет классов, но чтение и запись происходят через те же InputStream и OutputStream. Для уарта ты правильно нашел Java Communications API. Можно ли извратиться и считать как файл — хз, навряд ли. Да и зачем — есть же специальное апи как раз для работы с ком-портами.
А>Можно ли найти чтение uart на мобильных платформах?
Посмотри в документации от производителей (SonyEricsson, Nokia) и на форумах их порталов, там точно должно быть. Ссылки есть в статье.
А>как у JAVA с переносимостью на КПК?
Если имеется в виду SE -> ME, то плохо, так как это разные платформы, и общих классов совсем немного. Если имеешь в виду переносимость с одного мобильного устройства на другое, то более менее. Но у разных устройств может быть разная реализация KVM и, соответственно, свои баги и фичи. Об этом тоже написано в стать.
Конкретно с уартом возможно будут отличаться строки соединения.
Здравствуйте, _nn_, Вы писали:
__>Добавлю, что для Eclipse проще будет использовать eclipseME.
Я специально сделал акцент на том, что начинать надо без плагинов и прочая. А когда разберёшься, можно и плагины. Но я до сих пор комфортнее всего чувствую себя с Антом и Антенной.
J>лучше и не начинать
По правде говоря, если начать с чистого листа, я бы навряд ли выбрал эту платформу. Но в целом жить можно J>Google Android рулит
Поддерживаю alsemm, список устройств в студию. Даже упоминание iPhone было бы более уместным.
J>>лучше и не начинать D>По правде говоря, если начать с чистого листа, я бы навряд ли выбрал эту платформу. Но в целом жить можно
а какую бы выбрали ?
Здравствуйте, bukazoid, Вы писали:
D>>По правде говоря, если начать с чистого листа, я бы навряд ли выбрал эту платформу. Но в целом жить можно B>а какую бы выбрали ?
Сейчас сложно сказать, другими языками и технологиями интересуюсь мало. Посмотрел бы за что больше платят и что выглядит интересным.
Здравствуйте, Георгиевич, Вы писали:
Г>Здравствуйте, Данилов Кирилл aka Donz, Вы писали: ДКA>>С чего начать?[/url]
Г>Ждемс аналогичную статью, Г>"J2ME: Как закончить"
J>>лучше и не начинать D>По правде говоря, если начать с чистого листа, я бы навряд ли выбрал эту платформу. Но в целом жить можно J>>Google Android рулит D>Поддерживаю alsemm, список устройств в студию. Даже упоминание iPhone было бы более уместным.
это шутка была с моей стороны, просто насколько я знаю все основные производители мобильных устройств уже поддержали идею и на это лето планируется много чего...
в штатах сейчас бум и много компаний и проектов уже связано с Android
вопрос был "С чего начать?", я думаю "А смысл начинать?", если даже я далекий от J2ME за несколько дней перевел платформу на Android здесь, а с J2ME я просто утонул бы
Здравствуйте, jalxm, Вы писали:
J>это шутка была с моей стороны, просто насколько я знаю все основные производители мобильных устройств уже поддержали идею и на это лето планируется много чего...
Nokia и SE устройств на Android не планируют. Из основных игроков поддержала Моторола, у которой кризис, и Самсунг.
А вообще это оффтоп.
J>вопрос был "С чего начать?", я думаю "А смысл начинать?", если даже я далекий от J2ME за несколько дней перевел платформу на Android здесь, а с J2ME я просто утонул бы
В Android используется та же самая Java в качестве языка. Не думаю, что сейчас на J2ME начать сложнее, чем с Android. В любом случае отправлять J2ME на свалку однозначно рано. К тому же Android не заменит яву на обычных мобильных телефонах.
В общем, Android — это пока по большей части пиар.
Здравствуйте, jalxm, Вы писали:
J>Здравствуйте, Donz, Вы писали:
J>>>лучше и не начинать D>>По правде говоря, если начать с чистого листа, я бы навряд ли выбрал эту платформу. Но в целом жить можно J>>>Google Android рулит D>>Поддерживаю alsemm, список устройств в студию. Даже упоминание iPhone было бы более уместным.
J>это шутка была с моей стороны, просто насколько я знаю все основные производители мобильных устройств уже поддержали идею и на это лето планируется много чего... J>в штатах сейчас бум и много компаний и проектов уже связано с Android
Нет никакого бума
J>вопрос был "С чего начать?", я думаю "А смысл начинать?", если даже я далекий от J2ME за несколько дней перевел платформу на Android здесь, а с J2ME я просто утонул бы
Перевели в каком смысле? Компилируется и работает на эмуляторе?
Re: J2ME. С чего начать?
От:
Аноним
Дата:
29.05.08 13:32
Оценка:
Здравствуйте, Данилов Кирилл aka Donz, Вы писали:
ДКA>Статья: ДКA>J2ME. С чего начать?
ДКA>Авторы: ДКA> Данилов Кирилл aka Donz
ДКA>Аннотация: ДКA>Cтатья призвана помочь обойти типичные ошибки, совершаемые при начале работы с платформой J2ME. Основной упор сделан на вещи, до которых автору пришлось доходить самому. Статья подразумевает знание языка Java и основных пакетов J2SE (java.lang.*, java.util.*, java.io.*), и касается в основном CLDC и MIDP.
Обойти типичные ошибки, на самом деле в самих примерах есть таковые, лови первую:
protected void paint(Graphics g)
{
//Производим очистку области, которая помечена как недействительная,
//то есть заново прорисовываем каждый пиксель в этой области
g.setColor(COLOR_WHITE);
g.fillRect(g.getClipX(), g.getClipY(), g.getClipWidth(),
g.getClipHeight());
if (helloImage != null)
//Рисуем картинку, если она проинициализирована
g.drawImage(helloImage, getWidth() / 2, getHeight() / 2,
Graphics.VCENTER | Graphics.HCENTER);
else
//Если картинка непроинициализирована, то рисуем строку.
//Центрирование по вертикали выполняем сами, так как оно
//не определено в MIDP для рисования строк
g.drawString(loading, getWidth() / 2,
(getHeight() - Font.getDefaultFont().getHeight()) / 2,
Graphics.HCENTER | Graphics.TOP);
}
Выводимый текст на белом фоне будет тоже белый, для текста надо задавать цвет отдельно, вот так например:
protected void paint(Graphics g)
{
//Производим очистку области, которая помечена как недействительная,
//то есть заново прорисовываем каждый пиксель в этой области
g.setColor(COLOR_WHITE);
g.fillRect(g.getClipX(), g.getClipY(), g.getClipWidth(),
g.getClipHeight());
if (helloImage != null)
//Рисуем картинку, если она проинициализирована
g.drawImage(helloImage, getWidth() / 2, getHeight() / 2,
Graphics.VCENTER | Graphics.HCENTER);
else
//******************************
g.setColor(0,0,0);
//******************************
//Если картинка непроинициализирована, то рисуем строку.
//Центрирование по вертикали выполняем сами, так как оно
//не определено в MIDP для рисования строк
g.drawString(loading, getWidth() / 2,
(getHeight() - Font.getDefaultFont().getHeight()) / 2,
Graphics.HCENTER | Graphics.TOP);
}
Автор блин кросавчик, видно где то у пиндосов взял код с ошибкой. С уважением Гришков И.О.
Здравствуйте, Аноним, Вы писали:
А>Обойти типичные ошибки, на самом деле в самих примерах есть таковые, лови первую: А>Выводимый текст на белом фоне будет тоже белый, для текста надо задавать цвет отдельно, вот так например:
За найденную неточность спасибо. На полноценный баг, ИМХО, не тянет.
А>Автор блин кросавчик, видно где то у пиндосов взял код с ошибкой. С уважением Гришков И.О.
А за это совсем неспасибо. Код настолько сложный, что даже мысль о его написании разработчиком из России невозможна?
Прежде чем делать такие заявления стоит подумать, глубоко вдохнуть, выдохнуть, а потом, если осталось желание, написать, подкрепив доказательствами. Иначе это пустые обвинения в воровстве.
Что касается самой неточности, то, если посмотреть код внимательно, можно увидеть, что случаи вывода строки крайне редки. Время показа "Lodaing..." перед загрузкой картинки настолько мало, что надпись навряд ли будет замечена пользователем даже в чёрном цвете. Собственно, поэтому и я этот момент пропустил.
Здравствуйте, Данилов Кирилл aka Donz, Вы писали:
ДКA>Cтатья призвана помочь обойти типичные ошибки, совершаемые при начале работы с платформой J2ME. Основной упор сделан на вещи, до которых автору пришлось доходить самому. Статья подразумевает знание языка Java и основных пакетов J2SE (java.lang.*, java.util.*, java.io.*), и касается в основном CLDC и MIDP.
Сегодня столкнулся с одной особеностью — не все версии Java можно использовать при создании приложения. Например, я использовал Java 1.5 и MIDP 2.0. Однако, приложение не запускалось. Пересобрал с Java 1.4 — запустилось.
Здравствуйте, techgl, Вы писали:
ДКA>>Cтатья призвана помочь обойти типичные ошибки, совершаемые при начале работы с платформой J2ME. Основной упор сделан на вещи, до которых автору пришлось доходить самому. Статья подразумевает знание языка Java и основных пакетов J2SE (java.lang.*, java.util.*, java.io.*), и касается в основном CLDC и MIDP. T>Сегодня столкнулся с одной особеностью — не все версии Java можно использовать при создании приложения. Например, я использовал Java 1.5 и MIDP 2.0. Однако, приложение не запускалось. Пересобрал с Java 1.4 — запустилось.
Скорее всего, надо было правильно указать опции -target и -source, которые рассматриваются в статье. Я работал и с 1.5, и с 1.6 нормально. Разница только в совсем небольшом увеличении размера (10-50 байт на 60-килобайтный джар).
ДКA>Авторы: ДКA> Данилов Кирилл aka Donz
ДКA>Аннотация: ДКA>Cтатья призвана помочь обойти типичные ошибки, совершаемые при начале работы с платформой J2ME. Основной упор сделан на вещи, до которых автору пришлось доходить самому. Статья подразумевает знание языка Java и основных пакетов J2SE (java.lang.*, java.util.*, java.io.*), и касается в основном CLDC и MIDP.
Хочу написать програмку регистрации данных по уарту, для ХР и мобильных устройств впоследствии. Сходил http://www.java.com/ru/download/manual.jsp , получил "Поздравляем! У вас установлена рекомендованная версия Java (Version 6 Update 13)." Но никакого JVM ни JAVAC на машине не наблюдается. Скормил
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
java.exe
получил
F:\myDir\Java>java HelloWorld.java
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/java
Caused by: java.lang.ClassNotFoundException: HelloWorld.java
at java.net.URLClassLoader$1.run(Unknown Source)
..................................
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: HelloWorld.java. Program will exit.
Я чтото делаю не так или нужно еще чтото докачать? Mobile Java или J2ME говорит — "Виртуальная машина KVM должна быть установлена производителем. Её НЕЛЬЗЯ загрузить и установить самостоятельно." Как вообще отлаживать программы на персоналке? Здесь J2ME. С чего начать?
тексты с import javax.microedition.* или microedition есть для персоналок? Что текое ME EE SE? С чем начать работу что потом на мобильные устройства переносить?
нашел компилятор, нужно было JDK скачать, линкощика пока не нахожу, ну ладно разберусь. Вопросы остаются. как у JAVA с переносимостью на КПК?
uart можно читать как файл или только через то API
Re[3]: J2ME. С чего начать?
От:
Аноним
Дата:
24.05.09 00:10
Оценка:
JAR-ы слинковал, только не запускаются манифест какойто нужен
Re[4]: J2ME. С чего начать?
От:
Аноним
Дата:
24.05.09 03:20
Оценка:
и с манифестом разобрался. Такой файлец туда нужно Main-Class: HelloWorld вписать. Программой 7z можно.