// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Технологическая карта по приложениям Java ME Embedded и Java Card
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Технологическая карта по приложениям Java ME Embedded и Java Card - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Технологическая карта по приложениям Java ME Embedded и Java Card

== Общее представление о мобильном приложении 

В большинстве мобильных приложений используется платформа Java Micro Edition (Java ME), разработанная для небольших устройств, таких как мобильные телефоны, но используемая на широком спектре устройств. В платформе Java ME используются сокращенные подмножества компонентов Java SE, виртуальных машин и интерфейсов API. В ней также определены интерфейсы API, которые предназначены специально для мобильных и встроенных устройств. IDE NetBeans поддерживает платформы link:http://www.oracle.com/us/technologies/java/embedded/micro-edition/overview/index.html[+Oracle Java ME Embedded+] и link:http://www.oracle.com/technetwork/java/javame/javacard/overview/getstarted/index.html[+Java Card+].

=== Начало работы

* link:../docs/javame/imp-ng.html[+Создание, отладка и профилирование мобильных встроенных приложений+]
* link:../docs/javame/java-card.html[+Краткое руководство пользователя по разработке приложений Java Card в среде NetBeans+]

== Учебные курсы и статьи

=== Разработка приложений Java Card

* link:../docs/javame/javacard.html[+Статья о начале работы с Java Card+]
* link:http://www.oracle.com/technetwork/articles/javase/javacard-servlets-136657.html[+Развертывание сервлетов на смарт-картах: переносные веб-серверы с Java Card 3.0+]

== Экранные демонстрации

* link:../docs/javame/nb_me8_screencast.html[+Демонстрация: поддержка NetBeans IDE для Java ME 8+]
* YouTube: link:http://youtu.be/_1PPSt2AwpM[+ Введение в Java Micro Edition (ME) 8+] (_Автор: Терренс Бар (Terrence Bar)_)
* link:../docs/javame/nb_mesdk_screencast.html[+Демонстрация: настройка IDE NetBeans для разработки мобильных приложений в Windows+]
* link:../docs/javame/imp-ng-screencast.html[+Демонстрационная версия: поддержка профиля IMP-NG в IDE NetBeans+]

== Документы от сообщества

* link:http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=11194[+Установка подключаемого модуля Blackberry RIM для IDE NetBeans+]
* link:http://nbandroid.org/wiki/index.php/Installation[+Установка подключаемого модуля Android в среду NetBeans+]

== Другие источники

* link:http://wiki.netbeans.org/JavaMESDKSupport[+Страница wiki NetBeans по поддержке Java ME SDK+]
* link:http://docs.oracle.com/javame/config/cldc/rel/8/rpi/html/getstart_rpi/debugging.htm#sthref31[+ Использование NetBeans с платой Raspberry Pi+] в _Кратком руководстве Oracle® Java ME Embedded для эталонной платформы (Raspberry Pi) версии 8 EA 2_
* link:http://docs.oracle.com/javame/config/cldc/rel/3.3/win/gs/html/getstart_win32/setup_nbenv.htm[+ Использование ПО Oracle Java ME SDK с NetBeans+]
* link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG1552[+Разработка приложений Java ME+] в документе _Разработка приложений в IDE NetBeans_

=== Источники сообщества NetBeans Mobility 

* link:http://wiki.netbeans.org/NetBeansUserFAQ#Java_ME.2FMobility[+Часто задаваемые вопросы по NetBeans Mobility+]
* link:http://forums.netbeans.org/javame-users.html[+Форум пользователей NetBeans Java ME+]

=== Сайты с информацией по Java ME

* link:http://www.oracle.com/technetwork/java/embedded/resources/me-embeddocs/index.html[+Документация по Java ME Embedded+]
* link:http://www.oracle.com/technetwork/java/javame/index.html[+Oracle Technology Network - целевая страница Java ME+]
