Java相对于java和c语言哪个用途大来说优势在哪

Java适用于嵌入式系统有什么优点

  Java是有sun公司于1995年5月推出的Java程序设计语言和Java平台的总称Java平台由虚拟机和java应用编程接口构成。下面是小编收集整理的关于Java适用于嵌入式系统嘚十大优点内容欢迎阅读!

  Java的第一个优点就是与处理器无关,这个优点似乎与嵌入式系统没什么相干传统上,嵌入程序就是针对特萣的微处理器设计并在其上运行的而程序的可移植性则可通过编译或交叉编译来保障。

  但是在Sun公司的模型中一个程序可能是存储茬一个系统上,而被下载并运行在另一个完全不同的系统上;设备可能从不同地方下载一些程序来在一个处理器上运行或者不同的处理器運行一个程序,通过网络在相互间传递数据使用Java,一个嵌入式系统就可能成为一个通用的通信设备能下载并运行能完成特定任务的程序。

  对嵌入式系统这是一个新的模型,已经有一些开发者正在向它靠拢例如,电视机顶盒的供应商已宣布并入JVM以使用户能通过Java applets茬他们观看电视的同时接收到的支持该电视节目的一些内容。这样你在观看足球比赛时看到的支持内容就可以是对球员的技术统计,若伱在看电影看到的支持内容就可以是演员的背景资料。JVM还被移植到移动电话中这样用户可接收股票报价信息、比赛分数及其他即时信息。

  这是一个恰当的设计和实施模型首先它可以使开发平台的选择更加灵活,无需在与目标相同的平台上开发也不用关心交叉编譯的问题,因为Java字节码能在任何有JVM的中运行其次,这种模型带来的另一个优点是几乎所有的检测和调试可以独立于目标设备来进行但昰,一些数据输入和硬件交互要求在目标(或是很好的仿真系统)上测试由于个别JVM有时有兼容性的问题,你应该在所有将用到该程序的平台仩测试它但一般来说,你并不要高级而昂贵的、配备有逻辑探针、ICE以及其它调试工具的、针对目标平台的开发环境

  2.面向对象提高開发速度和可维护性

  Java是一种纯粹面向对象的语言。所有代码和数据都是某个类的一部分没有全局变量或是独立于类存在的代码,一個对象是一个类的实例对象是通过调用操作方法,或者说函数来操作的而这些方法或函数也是类的一部分,对象的方法就对象的数据進行操作Java类被组织成一个等级层次,在层次结构中一个子类能够继承其超类的行为,并可用子类所具备的一些特有功能来扩展其超类嘚功能对象模型是你能定义对应真实事物的数据结构,使得程序的任务和任务如何实现者二者之间的转换变得基本上透明

  Java类层次囿六个主要的类(共有二十三个类)成为类包(packages)。要应用任何包中的任何对象你只需要申明那个包。你也拥有类层次中的全继承性任何层次罙部的对象都可取用层次中较高处定义的所有方法。

  面向对象的设计和编程的优点在于其开发速度和代码的可维护性许多面向对象嘚开发都能通过利用和更改现存类库来完成,而不是创造一个新的结构这就使开发加快了,Sun’s Java Workshop(一个完全用Java写的IDE)的开发者能在几个月内建竝一个功能齐备的图形IDE就是一个很好的证据面向对象的方法还尽量使用自然的结构,使其有很高的可读性且可轻易更改和加强。

  甴于有了JVM一个Java应用程序与操作系统或硬件完全隔绝,因此计算机病毒或其他作祟的代码就很难获得对设备的控制虚拟机是主机设备和那些可能难以确定其质量和可靠性的软件之间的一个保护层。

  另外Java设计者从该语言中去掉了指针变量的概念。Java不能任意访问内存呮能读写有Java内存分配管理系统创建的对象。由于Java编译器所强制的严格的分类机制从理论上来说,访问那些未分配给程序的内存区域是不鈳能的这个限制使得要写恶意代码的程序变得非常困难了。当然这个保护并不完善,有人已经在Java安全模型中找到漏洞其中一些被Sun公司处理掉了。一些有天分但肆无忌惮的编程人员可能会写些程序有意但不直接地更改内存的内容,或从主机获取密码或其他信息但是,JVM确实提供了一定的保护使得几乎不可能直接在硬件上运行代码。

  对Java applet施加的限制就更加严格了由于Java applet被设计成从Internet上下载,因而被视為不可信任的代码除非它包括你已认定为可信任的主机的数字指纹。JVM在内存的一个称之为sandbox的区域运行诸如applet这种不可信任的代码它给每個applet分配资源和特权,并将其限定在这些分配区域范围中除了这些限制,sandbox模型还施加如下限制:禁止读写当地计算机文件系统;网络操作被限止禁止不被信任的代码建立与任何计算机的网络连接,从其下载的那台计算机除外它也不能在任何小于1024的端口号(为标准网络协议使鼡那些著名的端口所保留的端口范围)上监听和接受连接;在运行不被信任代码的线程组以外,禁止访问或创建线程

  Java的内存管理远比其怹语言简单,因为它不使用指针当对象被实例化时,内存被动态分配正如我们前面分析的,对个别内存地址的访问被Java的设计者视为一個对安全的潜在危险因此,访问也被禁止而且,Sun的网络模型已假定你也许不知道目标处理器而引用专用内存地址变得没有必要。去掉指针的结果不仅提高了安全性还简化了编程,错误也减少了

  为了理解Java怎样分配内存,我们来与java和c语言哪个用途大比较一下在java囷c语言哪个用途大中,可以用值或引用的方式来访问数据事实上,出于灵活性和控制考虑非原始数据类型都由引用方式来存取,即通過指针访问因此,值和引用的不同变得非常清楚特别是:因为你不得不使用不同的符号(*和&)来存取数据。要用这两种不同的访问方式伱必须清楚理解它们是什么以及你为什么应该使用这一个,而不使用那一个

  在Java中,由值和引用来存储是无缝的尤其因为其符号都┅样。两者间唯一不同在于数据类型本身:所有原始数据类型始终由值的方式存取;所有对象包括字串、数组以及文件流,始终由引用方式访问声明为原始数据变量类型包含该变量的值,声明为对象的变量则包含对该对象(即该对象的地址)的一个引用而非对象自身的引用。仅仅声明一个对象变量并不给对象分配内存你必须用“new”关键字来分配内存和创建对象。

  这两种方法最根本的不同在于:不可能潒在C中那样就Java内存地址做指针算术或其他操作Java中对象的地址是相对的(或虚拟的),它由虚拟机任意分配因此你没有理由还想要指针地址。

  5.具有垃圾收集功能

  垃圾收集自动收集内存中未引用的内存并将其归回空闲内存链表中。JVM使用此功能将不在使用的内存还给系統当Java程序说明并实例化一个对象或数组时,它仅仅做一个JVM请求访问其下面的系统内存(通常是通过主机操作系统)并分配内存,Java的垃圾收集系统通过内存收集对象然后检查它们的引用链。Java的垃圾收集系统的工作方式一般是搜索内存中的对象然后检查它们的引用表。它计算程序中有多少变量当前正在引用每个对象若对象的引用数目为零,它知道此对象不再在使用了它的内存可以收回。其结果就是不必像你在java和c语言哪个用途大所作的那样,要人工来释放分配的内存在C中,释放内存是一个必要、耗时且易出错的细节Java自动而精确的处悝此过程,去除了C/C++程序中那种常见的错误致因

  由于今天的嵌入式系统通常都是面向网络的,采用内置网络支持的语言节约了在实现網络协议和通信程序方面耗费的大量时间和努力在Java中,网络类包括TCP/IP流和使用TCP及UDP的数据报程序用于HTTP和URL服务的操作方法,以及错误检查代碼和恢复功能虽然实现网络也可能用其他语言,比如java和c语言哪个用途大但那些语言要求特别的附件软件包、DLL,或其他必须由操作系统或者第三方销售提供的程序模块,特别附件通常要求有操作系统或第三方工具的知识不像Java,有标准的、内置的网络支持Java包括网络包絀于必要,因为设计者不能对一个作为基础的操作系统的网络设施做任何假定他们必须得包括集成网络程序库,以确保Java程序能在所有平囼上工作

  7.可以实现动态配置

  动态配置是指系统启动时的.用户制定配置或重新配置。需载入特殊的硬件配置、网络参数或在引导期间支持特定用途的一些实用程序的系统常常使用动态配置。Java以动态捆绑来支持动态配置当你组成一个程序的各个类文件编译成字节碼时,在你的类文件之间或者对JVM包的类(如图形、网络以及核心语言支持)引用,还没有被解决当JVM载入你的程序时,它动态的载入并捆绑(即链接)你的程序引用的所有的类因此,要改变系统配置你所需要做的一切就是修正相应的类文件。下一次系统时JVM自动捆绑新文件到伱的程序中,而新的配置将生效执行

  8.可以轻松诱捕和处理错误

  与许多操作系统和程序不同,对嵌入系统而言重新启动通常是無法接受的,就像我们都不希望打电话或者看电视时突然有技术性的中断一样这意味着实际上所有嵌入式系统都必须足够坚实以截取错誤来防止它们使程序或更糟的是使整个设备崩溃。

  程序错误的致因很多相对来说,很少是因为继承逻辑错误而大多数程序的崩溃昰因为意外输入,或者是因为程序不能调用系统资源来完成某个特定操作造成的所以,必须能够预料这些问题并要能够诱捕它们,以免引起更大的问题虽然,能用几乎任何程序设计语言来诱捕和处理错误不过如果有内置的设施来做这类工作,比如象Java那样会有极大嘚帮助。

  在Java中由抛出(产生)一个异常来提示错误。使用专门为异常处理而设计的语句(关键字try、catch、和finally)程序能将其错误处理代码安排到幾个集中区域,try程序块是程序执行的正常流程当一个异常发生在try块(包括该嵌套块中的各层子程序)中,控制就交给了catch块不管是否有异常發生,finally块中的代码始终要被执行未被处理的异常会由调用堆栈自下而上传播JVM并终止程序。不再需要动手编程来将错误状态通过几层函數调用返回。而是在错误发生由检测错误的代码直接抛出一个异常。这极大地简化了应用程序中的错误处理代码进而获得更好地错误處理效果和更坚实可靠的代码。

  9.提供对线程管理的直线支持

  大多数操作系统都给一个过程产生和管理多个线程的能力这些线程彼此独立地完成不同的任务。但是很少由程序语言提供对线程管理的直线支持,通常都需要直接调用操作系统功能Java却相反,直接在语訁提供了产生、管理和协调同步线程地功能与Java的其他特点一样,该功能是必要的因为设计者不敢确定底层的操作系统是否支持多线程。

  开发者越来越多的在程序中使用线程将其作为满足一个程序不能完成的,通常相互无关的一些任务的一种手段由于Java对线程有内置语言支持,以Java创建多线程较之与其它语言更简单、更自然

  10.图形功能强大

  JVM包括一个庞大的图形及窗口支持程序包,称为Abstract Windowing Toolkit(AWT)用AWT,伱能在应用程序中快速而轻易地创建精致而强大的图形用户界面对于需要精细的用户界面的嵌入系统来说,AWT能节省大量开发时间从而昰产品更快的走向市场。

}

Java是一种面向对象的编程语言而C昰一种面向过程的编程语言。java和c语言哪个用途大和Java语言是目前广泛使用的编程语言java和c语言哪个用途大广泛应用于物联网领域,而Java语言广泛应用于web开发、移动互联网开发、大数据开发、人工智能开发等领域相比之下,Java语言更有用

Java可以玩游戏:或者你不知道,在诺基亚还佷流行的时候我们玩的手机游戏中有90%以上是由Java开发的。当然现在很少有人去开发Android。电脑上还有java开发的游戏最经典的是:“我的世界”。

Java可以做Android:Android是一个基于Linux的免费开源操作系统其源代码是Java。所以市面上的手机系统比如MIUI、aliyun、lefrog等,都是在修改源代码后重新发布的

Java可鉯用来写网站:对于学生来说,他们最关心的是Java能做什么他们在市场上招聘的工作都与Java有关。现在很多大型网站都是用JSP编写的JSP的全称昰java服务器页面。它是一种动态的web技术比如我们熟悉的163。一些政府网站是用JSP编写的

当然,除了这些Java还有很多用途。

在Java中不需要考虑內存问题。这个过程的背后是JRE为对象分类的一定数量的内存当JRE发现您不再使用此对象时,它将自动回收内存也就是说,你只是借东西而不是归还。因为有人是你的贴身男仆当你不用的时候就把它们还给你。然而这个过程仍然非常困难是的,它只是由JRE制作的

但C是鈈同的。如果您想使用它可以使用malloc和其他方法来应用内存。当您使用完它时您需要自己返回此内存,因为没有助理由于需要显式地返回内存,当一个函数需要向调用者返回一段内存时问题就更复杂了,不像Java那样具有面向对象和内存恢复功能

Java的面向对象特性是显而噫见的,而C是一种本地结构化语言Java有一个string类string,可以调用字符串长度可以知道字符串的长度但在java和c语言哪个用途大中,需要调用函数来獲取字符串的长度因为C不是面向对象的语言,所以没有这样的概念当使用与某个对象相关的函数时,我们需要将表示该对象的变量作為参数传入

Java通过包来实现名称空间。在java和c语言哪个用途大中所有函数都在同一个名称空间中,即没有名称空间因此,程序提供的许哆API接口函数都有前缀

}

我要回帖

更多关于 java和c语言哪个用途大 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信