F)网络
由于今天的嵌入式系统通常都是网络的,采用内置网络支持的语言节约了在实现网络协议和通信程序方面耗费的大量时间和努力。在Java中,网络类包括TCP/IP流和使用TCP及UDP的数据报程序,用于HTTP和URL服务的操作方法,以及错误检查代码和恢复功能。
虽然实现网络也可能用其他语言,比如C语言,但那些语言要求特别的附件软件包,DLL,或其他必须由操作系统,或者第三方销售提供程序模块,特别附件通常要求有操作系统或第三方工具的知识,不象Java,有标准的、内置的网络支持。
Java包括网络包出于必要,因为设计者不能对一个作为基础的操作系统的网络设施做任何假定,他们必须得包括集成网络程序库,以确保Java程序能在所有平台上工作。
G)动态配置
动态配置是指一系统启动时的用户制定配置或重新配置。需载入特殊的硬件配置、网络参数或在引导期间支持特定用途的一些实用程序的系统,常常使用动态配置。
Java以动态捆绑来支持动态配置。当你组成一个程序的各个类文件编译成字节码时,在你的类文件之间,或者对JVM包的类(如图形、网络以及核心语言支持)引用,还没有被解决。当JVM载入你的程序时,它动态的载入并捆绑(即链接)你的程序引用的所有的类。因此,要改变系统配置,你所需要做的一切就是修正相应的类文件。下一次系统时,JVM自动捆绑新文件到你的程序中,而新的配置将生效执行。
H)异常处理
与许多操作系统和程序不同,对嵌入系统而言,重新启动通常是无法接受的,就像我们都不希望打电话或者看电视时突然有技术性的中断一样。这意味着实际上所有嵌入式系统都必须足够坚实以截取错误来防止它们使程序或更糟的是使整个设备崩溃。
程序错误的致因很多。相对来说,很少是因为继承逻辑错误,而大多数程序的崩溃是因为意外输入,或者是因为程序不能调用系统资源来完成某个特定操作。
在Java中,由抛出(产生)一个异常来提示错误。使用专门为异常处理而设计的语句(关键字try、catch、和finally),程序就能将其错误处理代码安排到几个集中区域,try程序块是程序执行的正常流程。当一个异常发生在try块(包括该嵌套块中的各层子程序)中,控制就交给了catch块。不管是否有异常发生,finally块中的代码始终要被执行。未被处理的异常会由调用堆栈自下而上传播JVM并终止程序。你不再需要动手编程,来将错误状态通过几层函数调用返回。而是,在错误发生由检测错误的代码直接抛出一个异常。这极大地简化了应用程序中的错误处理代码,进而获得更好地错误处理效果和更坚实可靠的代码。
I)线程
大多数操作系统都给一个过程产生和管理多个线程的能力,这些线程彼此独立地完成不同地任务。但是,很少由程序语言提供对线程管理的直线支持,通常都需要直接调用操作系统功能。Java却相反,直接在语言提供了产生、管理和协调同步线程地功能。与Java的其他特点一样,该功能是必要的,因为设计者不敢确定底层的操作系统是否支持多线程。
开发者越来越多的在程序中使用线程,将其作为满足一个程序不能完成的,通常相互无关的一些任务的一种手段。由于Java对线程有内置语言支持,以Java创建多线程较之与其它语言更简单、更自然。
J)图形
JVM包括一个庞大的图形及窗口支持程序包,称为Abstract Windowing Toolkit(AWT)。用AWT,你能在应用程序中快速而轻易地创建精致而强大的图形用户界面。对于需要精细的用户界面的嵌入系统来说,AWT能节省大量开发时间,从而是产品更快的走向市场。