You are currently browsing the tag archive for the ‘embedded’ tag.
Announcing Java ME 8 Developer Drops
Recently, we released Early Access #2 versions of Java ME 8 and Java ME SDK 8. A lot of developers tried it out and feedback has been great. As expected (after all, this was an Early Access release) – there are still bugs and deficiencies and we have been busy fixing them … many are already taken care of.
In order to enable the developer community to follow along and benefit from the latest improvements and fixes we decided to provide semi-regular developer drops alongside the Early Access #2 release. These developer drops are planned roughly every 14 days, are based on the latest builds and have undergone basic testing. They are provided “as is”, with no guarantees of stability or functionality. This is bleeding edge ;-)
You can access these developer builds on the same pages as the other EA #2 downloads (look for “latest developer build”):
Note: It is recommended to use the NetBeans 8 RC1 “All” bundle together with the latest Java ME SDK 8 developer build.
As in last years, Oracle will again have a big presence at Embedded World in Nuremberg, Germany.
Find us in hall 5, booth 271. At the booth, you can see several demos focusing on Oracle’s Internet of Things strategy and the benefits of Java for embedded software solutions, including showcase applications by partners such as Gemalto, Freescale, Eurotech, and Hitachi.
I will be doing some sessions as well (download the full conference program here):
- Thu, Feb 27, 9:30: A hands-on tutorial on “Desktop to Internet of Things in 12 Seconds with Java ME Embedded”
- Thu, Feb 27, 15:30: “Trust Me, I am an M2M Device”
So, pick up some Java while you’re at Embedded World, and not just the technology kind, but also the hot, coffee kind ;-)
See you at Embedded World!
Announcing Java ME 8 Early Access #2
This blog has been quiet lately, but not for lack of activity … quite the opposite.
We’ve been extremely busy with Java ME 8 – getting the specs (JSR 360: CLDC 8 & JSR 361: MEEP 8) ready for final ballot and working hard on updating the first Java ME 8 Early Access at JavaOne 2013 (learn more) by adding the latest features as well as new platforms.
So today, we’re announcing new update releases:
- Oracle Java ME Embedded 8 Early Access #2
- Oracle Java ME SDK 8 Early Access #2
These releases are designed to continue to drive Java ME 8 momentum in the industry by giving the community access to the latest Java ME 8 functionality and to demonstrate Oracle’s commitment to delivering Java ME 8 as a modern and purpose-built embedded software platform that addresses the rising demands of the embedded software industry and the Internet of Things.
Key features of the Java ME 8 and Java ME SDK 8 Early Access #2 releases:
- Improved support for the JSR 360 (CLDC 8 and GCF 8) draft
- Improved support for the JSR 361 (MEEP 8) draft
- Improved tooling support (Developer Agent, On-device Debugging, Memory Monitor, Network Monitor, CPU Profiler, Logging)
- Improved networking and connectivity, including wireless support (3GPP, CDMA, WiFi)
- Improved access to peripheral devices through Device Access API
- New APIs for RESTful programming (JSON, OAuth2, HTTP client)
- Updated Java ME SDK 8 EA #2, improving support for new ME 8 functionality, platforms, peripheral devices, tooling, and integration with NetBeans 8 Beta
- Ongoing support for APIs such as
- File Connection
- Wireless Messaging
- Web Services
- Security and Trust Services
- Bug fixes, usability, performance, and footprint improvements
- New support for Qualcomm IoE platform on Brew MP
- Improved support for Raspberry Pi Model B on Debian Linux
- Improved support for Windows 7
Call To Action/Where to find more:
- View the 15 minute webcast “Introduction into Java Micro Edition (ME) 8″
- Browse the full slide deck on “Java ME 8 and The Rise of the Internet of Things”
- Learn more and download Early Access #2 binaries and tools
- Access Release Notes and step-by-step Getting Started Guides
Yesterday, cyanogenmod was forced by Google to remove the CyanogenMod Installer from the Google Play Store, citing that it ‘encourages users to void their warranty’. However, if you know that cyanogenmod is working with hardware manufacturers to preinstall CyanogenMod to create alternate Android devices then Googles demand appears in a very different light.
I expect the next step for Google is to start locking down side-loading as well (installing apps through alternate channels) to further tighten control.
The air for embedded Android is getting thinner.
A few weeks ago I blogged about an ars technica article which looked at Google’s increasing control over the Android ecosystem (“Android “open for embedded”? Must-read Ars Technica article”).
Yesterday, Vision Mobile published a related post “The Naked Android” which keenly describes the role of Google Play Services and how Google is driving towards its Android endgame of “flatten, expand, mine”.
More food for thought if you’re considering Android for embedded.
Update (Nov 20): See also part 2 of this post.
A few days ago ars technica published an article “Google’s iron grip on Android: Controlling open source by any means necessary”.
If you are considering Android for embedded this article is a must-read to understand the severe ramifications of Google’s tight (and tightening) control on the Android technology and ecosystem.
Some quotes from the ars technica article:
- “Android is open – except for all the good parts“
- “Android actually falls into two categories: the open parts from the Android Open Source Project (AOSP) … and the closed source parts, which are all the Google-branded apps”
- “Android open source apps … turn into abandonware by moving all continuing development to a closed source model.”
- “Joining the OHA requires a company to sign its life away and promise to not build a device that runs a competing Android fork.”
- “Google Play Services is a closed source app owned by Google … to turn the “Android App Ecosystem” into the “Google Play Ecosystem”
- “You’re allowed to contribute to Android and allowed to use it for little hobbies, but in nearly every area, the deck is stacked against anyone trying to use Android without Google’s blessing“
Compare this with a recent Wired article “Oracle Makes Java More Relevant Than Ever”:
“Oracle has actually opened up Java even more — getting rid of some of the closed-door machinations that used to be part of the Java standards-making process. Java has been raked over the coals for security problems over the past few years, but Oracle has kept regular updates coming. And it’s working on a major upgrade to Java, due early next year.”
Update (9/25): Some users may be experiencing problems when installing the Java ME SDK 8 EA plugins into NetBeans. Please see the updated Java ME SDK 8 EA Release Notes for a workaround.
As I blogged recently, the Java ME 8 specifications are moving full steam ahead. And today, Oracle is announcing the immediate availability of Java ME 8 Early Access.
Java ME 8 in a Nutshell:
Java ME 8 is a significant update of the Java ME platform and provides a modern, flexible, and feature-rich embedded software platform that is aligned with Java SE 8 and allows more efficient development, deployment, and management of embedded software solutions:
- CLDC (Connected Limited Device Configuration) 8: Support for Java SE 8 language features and popular Java SE APIs, an updated virtual machine, and footprint optimizations
- GCF (Generic Connection Framework) 8 (part of CLDC 8): IPv6, enhanced connectivity, new protocols, and support for TLS 1.2
- MEEP 8 (Java ME Embedded Profile) 8: Provides a “services-enabled” application framework, footprint reductions through platform “right-sizing”, dedicated new embedded APIs, and an enhanced security model
- Device I/O API version C: Updated to Java ME 8/SE 8 language support, and new functionality and peripheral support
Java ME 8 Early Access scales down to very small target devices – the single-chip solution used on the STM32F4DISCOVERY board has 192 KB of RAM and 1 MB Flash, and costs around US $5 in volume, yet can host a complete solution of Java ME 8 EA runtime, networking and device access functionality, and Java application.
With this update, Java ME 8 is positioned to be the platform of choice for intelligent devices and the Internet of Things.
To learn more about Java ME 8:
- View the 15 minute webcast “Introduction into Java Micro Edition (ME) 8”
- Browse the full slide deck on “Java ME 8 and The Rise of the Internet of Things”
Getting started with Java ME 8 Early Access:
Java ME 8 Early Access is available now for the following developer boards:
- Raspberry Pi Model B (ARM11/Linux)
- ST Microelectronics STM32F4DISCOVERY (ARM Cortex-M4)
Software development is supported by the Java ME SDK 8 Early Access, which includes a Java ME 8 runtime emulation on Windows as well (so you can get started even without a developer board).
- Learn more and download Java ME 8 Early Access binaries and Java ME SDK 8 Early Access tools
- Access Release Notes and step-by-step Getting Started Guides
Embedded @ JavaOne is really coming into its own this year. Lots of cool and relevant topics, content, and activities related to Java and embedded. A quick sampler:
Be sure to watch the JavaOne keynotes for embedded announcements and some cool demos …
- Java Embedded Extreme Mashups: Building Self-Powering Sensor Nets for the Internet of Things TUT3676]
- Home Automation for Geeks [CON9177]
- Trust Me, I’m an M2M Device [CON7872]
- Is It a Car? Is It a Computer? No, It’s a Raspberry Pi JavaFX Informatics System [CON3243]
- JavaRCX: A Java Embedded Lego Mindstorm RCX Emulator [BOF7901]
- Beyond Beauty: JavaFX, Parallax, Touch, Raspberry Pi, Gyroscopes, and Much More [CON2540]
- Industrial Product Development: Modular Design in Multiple Dimensions with Java [CON2027]
- Performance Tuning and Optimization of Apache Hadoop with Java Embedded on ARM [BOF7216]
- Creating Multidevice Interactive Entertainment for the Living Room with Java [CON9176]
- Controlling NAO Robot with Java [CON11839]
- Java ME 8 Overview: A New Platform for Embedded Development for Small Devices [CON2267]
- and much more … for a full list of sessions, see the Content Catalog.
Internet of Things with Partners:
A summary of various demos, sessions, and activities by Oracle, Eurotech, and Hitachi related to the Internet of Things.
- A number of demos around embedded use cases, technologies, and solutions by partners across the ecosystem, including the “Device Showcase”
Duke’s Choie Awards:
- Be sure to watch for innovative embedded solutions with Java
Java Embedded Challenge for Raspberry Pi:
- Fun and creative hacking with Raspberry Pi, sensors, and more – equipment and expertise provided.
OTN Lounge and Java Codegarten:
- Hang out with the experts, including specialists in Java Embedded.
For more information on the above, check out the JavaOne Experiences page.
See you in a few days at the show!
One of the core requirements for embedded Java applications is the ability to access I/O devices, such as sensors, switches, converters, actuators, LEDs, and so on to enable the embedded system to interact with the world around it.
Java ME Embedded includes the Device Access API (DAAPI), which is a comprehensive API that provides access to a range of common I/O devices directly from your Java application in an easy and platform-independent manner. No native code, recompilation, or other “traditional embedded trickery” required.
That works great if you have your target platform already available and up-and-running. But what if you want to start software development before your target platform hardware is available? Or you want to develop most of the code on a Desktop PC for convenience and speed purposes? The Java ME SDK has you covered.
The Java ME SDK offers a set of tools as well as plugins for NetBeans and Eclipse which allow you to develop Java ME Embedded applications efficiently and leveraging your existing Java expertise. Another great feature is that it includes a full emulation runtime which emulates a Java ME Embedded target platform on the PC. Furthermore, the Java ME SDK also includes a tool called the “Custom Device Editor”, which allows you to customize the emulation runtime to your needs (for example, by adding the specific I/O devices of your actual target hardware) and even allows you to implement simulated device behavior (in Java, of course).
To get started with custom I/O devices in the Java ME SDK, check out an excellent blog post Tom McGinn from the Oracle Education Team, explaining how to add and simulate an I2C temperature sensor.
There is an interesting discussion happening on the LinkedIn “Internet of Things” group right now, in response to the InfoWorld article a few days ago titled “Oracle hitches Java to ‘Internet of things’“.
The discussion touches on some interesting details on why Java may or may not be a good choice for embedded. Besides the fact that Java is already proven to be one of the most widely deployed embedded technologies (“10 billion and Counting …”) I think the discussion misses a key point: The coming disruptive shift in the embedded industry.
Change Driven by Smart Devices
The embedded industry as a whole, and the embedded software industry in particular, are on the cusp of a disruptive shift in the way products and services are built and delivered, and how they interact with the rest of the world. This is driven by the explosion of smart, connected devices and the resulting need for security, interoperability, scalability, and faster time-to-market – requirements that are core to the value of the Internet of Things (IoT) space.
To understand why Java is a key technology for the embedded space, it is instructive to look at the mobile phone industry of about 10 years ago. The mobile industry was defined mostly by proprietary technologies, specialized hard- and software, lack of interoperability, and any number of other complexities. Bringing products and services to market in this fragmented environment was costly, time consuming, and didn’t scale – stifling the entire ecosystem and limiting participation to a few companies with deep enough pockets to take the risk.
Embedded Devices == Smart Phones?
Enter the first smart phones. These phones were much more than just devices. They provided a (relatively) open software platform with a consistent set of functionality across a range of devices, simple development, deployment, and monetization models, and ready-made integration with back-end services.
With this new model, the ecosystem equation changed completely. Now, instead of wasting time reinventing the wheel to enter a particular technology island, companies and developers were free to innovate on top of these platforms with a low barrier of entry but large scale opportunities. Almost immediately, we saw an explosion of new and innovative features, software, services, and even entirely new business models, benefiting an entire new ecosystem of those willing to make the shift.
Embedded Needs a New Software Paradigm
The similarities to todays embedded ecosystem are striking. Of course, the embedded markets are more varied and specialized in their needs compared to mobile. But fundamentally, the embedded industry has many of the same problems the mobile industry had 10 years ago. Embedded must move beyond the current fragmented and complex approach of building basic product functionality and towards a platform model that enables a shift upstack, to increase value in application software, business logic, services, and data. This is a key prerequisite to scale up and deliver new products and services for smart, connected devices.
The embedded software running on these devices will become much more challenging: It needs to be more flexible, robust, and secure than in the past while meeting ever tighter budget and time-to-market constraints. Successfully implementing such software requires the industry to embrace modern software paradigms, including productive, robust, and standardized programming languages, APIs, and tools, cross-platform execution environments, security design, high levels of pre-tested integration, software reuse and scalability, standards compliance, interoperability, and out-of-the-box integration with back-end services.
Top Technical Reasons for Java in Embedded
By design, Java already meets many of the above requirements. Over the years Java technology has been continuously optimized for embedded, and is being used across industries from smart cards, to industrial control units, robotics, eHealth devices, smart meters, consumer electronics, gateways, networking equipment, imaging systems, and much more.
Why you should consider Java for embedded solutions:
- Addresses key challenges of traditional embedded development by decoupling software logic from underlying platform (board/device, chipset, peripherals, OS, native code, libraries)
- Virtual Machine concept enables feature-rich, scalable, and robust cross-platform/multi-architecture application platform and promotes software reuse
- Simple and productive software development and deployment model (language, APIs, tools, reuse) reduces cost and time-to-market
- Single end-to-end development paradigm from client devices to back-end systems (where Java already is the de-facto standard)
- Enables flexibility and product extensibility through software services and in-field software delivery, updates, and management
- Highly-functional, deployment-ready runtimes reduce integration, testing, and support costs of final solution
- Open, standards-based technology, interoperable with many industry standards
- Enables leveraging large Java ecosystem of expertise, innovations, products, tools, code, and partners
An example of a successful embedded Java product is Oracle Java ME Embedded, which provides an optimized, robust, and complete Java runtime for resource-constrained devices as small as 130 KB RAM and 350 KB ROM/Flash – and which has already been adopted by the four top chipset and wireless module manufacturers.
In the End, The Value is in the Data
Increasingly, a successful embedded solution doesn’t end with the device. The real value of embedded is in the data, and more importantly, in the business information that can be extracted from that data. A client software platform is only as good as the integration into the enterprise it enables. That is why Oracle is not only driving Java Embedded software into devices, but also puts strategic focus on the Oracle Internet of Things Platform in order to enable customers and partners to build enterprise-class end-to-end solutions that deliver business value for IoT deployments.
For more information on why you should consider Java in embedded, please see the webinars, white papers, research reports, and more available throughout my blog.