// 
//     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 MEでは、縮小されたJava SEコンポーネントのサブセット、仮想マシン、およびAPIを使用します。また、消費者向けのモバイル機器や組込みデバイスに特化したAPIを定義します。NetBeans IDEでは、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開発のクイック・スタート・ガイド+]

== チュートリアルおよび記事

*Java Cardアプリケーションの開発*

* link:../docs/javame/javacard.html[+Java Cardクイック・スタートの記事+]
* link:http://www.oracle.com/technetwork/articles/javase/javacard-servlets-136657.html[+スマート・カード上でのサーブレットのデプロイ: ポータブルWebサーバーとJava Card 3.0+]

== スクリーンキャスト

* link:../docs/javame/nb_me8_screencast.html[+デモ: Java ME 8に対するNetBeans IDEのサポート+]
* YouTube: link:http://youtu.be/_1PPSt2AwpM[+Java Micro Edition (ME) 8の概要+](_Terrence Bar作成_)
* link:../docs/javame/nb_mesdk_screencast.html[+デモ: Windowsでのモバイル開発用のNetBeans IDEの設定+]
* link:../docs/javame/imp-ng-screencast.html[+デモ: NetBeans IDEでのIMP-NGプロファイルのサポート+]

== コミュニティの寄稿ドキュメント

* link:http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=11194[+NetBeans IDE用Blackberry RIMプラグインのインストール+]
* link:http://nbandroid.org/wiki/index.php/Installation[+NetBeansへのアンドロイド・プラグインのインストール方法+]

== その他のリソース

* link:http://wiki.netbeans.org/JavaMESDKSupport[+Java ME SDKサポートに関するNetBeans Wikiページ+]
* _Oracle® Java ME Embeddedリファレンス・プラットフォーム(Raspberry Pi)スタート・ガイド リリース8 EA 2_のlink:http://docs.oracle.com/javame/config/cldc/rel/8/rpi/html/getstart_rpi/debugging.htm#sthref31[+Raspberry Pi基板でのNetBeansの使用+]に関する項
* link:http://docs.oracle.com/javame/config/cldc/rel/3.3/win/gs/html/getstart_win32/setup_nbenv.htm[+Oracle Java ME SDKソフトウェアとNetBeansを組み合せた使用+]
* _NetBeans IDEによるアプリケーションの開発_のlink:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG1552[+Java MEアプリケーションの開発+]

*NetBeans Mobilityコミュニティのリソース*

* link:http://wiki.netbeans.org/NetBeansUserFAQ#Java_ME.2FMobility[+NetBeans MobilityのFAQ+]
* link:http://forums.netbeans.org/javame-users.html[+NetBeans Java MEユーザー・フォーラム User Forum+]

*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ランディング・ページ+]
