Java编程的特点是啥呢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java编程的特点是啥呢相关的知识,希望对你有一定的参考价值。

Java编程的特点是什么呢?

Java由美国SUN公司(被oracle公司收购)发明于1995年,是目前业界应用最广泛、使用人数最多的语言,连续多年排名世界第一,可以称之为“计算机语言界的英语”。

那么Java这么高的评价它的特点有哪些,下面我来为题主解答:

一、跨平台/可移植性

这是Java的核心优势。Java在设计时就很注重移植和跨平台性。比如:Java的int永远都是32位。不像C++可能是16,32,可能是根据编译器厂商规定的变化。这样的话程序的移植就会非常麻烦。

Java首先利用文本编辑器编写 Java源程序,源文件的后缀名为.java;再利用编译器(javac)将源程序编译成字节码文件,字节码文件的后缀名为.class; 最后利用虚拟机(解释器,java)解释执行。如下图所示:

二、安全性

Java适合于网络/分布式环境,为了达到这个目标,在安全性方面投入了很大的精力,使Java可以很容易构建防病毒,防篡改的系统。比如Java取消了强大但又危险的指针。由于指针可进行移动运算,指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的。

三、面向对象

面向对象是一种程序设计技术,非常适合大型软件的设计和开发。由于C++为了照顾大量C语言使用者而兼容了C,使得自身仅仅成为了带类的C语言,多少影响了其面向对象的彻底性!Java则是完全的面向对象语言。

四、简单性

Java就是C++语法的简化版,我们也可以将Java称之为“C++-”。跟我念“C加加减”,指的就是将C++的一些内容去掉;比如:头文件,指针运算,结构,联合,操作符重载,虚基类等等。同时,由于语法基于C语言,因此学习起来完全不费力。

五、高性能

Java最初发展阶段,总是被人诟病“性能低”;客观上,高级语言运行效率总是低于低级语言的,这个无法避免。Java语言本身发展中通过虚拟机的优化提升了几十倍运行效率。比如,通过JIT(JUST IN TIME)即时编译技术提高运行效率。 将一些“热点”字节码编译成本地机器码,并将结果缓存起来,在需要的时候重新调用。这样的话,使Java程序的执行效率大大提高,某些代码甚至接近C++的效率。

因此,Java低性能的短腿,已经被完全解决了。业界发展上,我们也看到很多C++应用转到Java开发,很多C++程序员转型为Java程序员。

六、分布式

Java是为Internet的分布式环境设计的,因为它能够处理TCP/IP协议。事实上,通过URL访问一个网络资源和访问本地文件是一样简单的。Java还支持远程方法调用(RMI,Remote Method Invocation),使程序能够通过网络调用方法。

七、多线程

多线程的使用可以带来更好的交互响应和实时行为。 Java多线程的简单性是Java成为主流服务器端开发语言的主要原因之一。

八、健壮性

Java是一种健壮的语言,吸收了C/C++ 语言的优点,但去掉了其影响程序健壮性的部分(如:指针、内存的申请与释放等)。Java程序不可能造成计算机崩溃。即使Java程序也可能有错误。如果出现某种出乎意料之事,程序也不会崩溃,而是把该异常抛出,再通过异常处理机制加以处理。

以上几种特性你了解到啦吗?    记得给个赞!

参考技术A Windows是非常受人们欢迎的操作系统,它是微软立足于软件界的根本所在;Java是非常受人们欢迎的编程语言,它是SUN公司的心血之作,Java最大特点是:一次编写,可以适应于任何平台, 包括IBM的大型机,SUN公司的服务器,装有Windows的PC机,甚至还包括手机这样的终端设备。1996年,微软遇到了SUN,两者一拍即合,微软利用Java开发出IE浏览器,它们携手打败了网景的浏览器,然而,此后发生的事情打碎了SUN的美好幻想。
Java曾经是Windows的亲密战友
事情还得从80年代说起,当时借PC机东风,微软与英特尔组成的Wintel联盟所向披靡,它们踩在蓝色巨人IBM的肩上发达起来,微软生产的Windows操作系统一度控制着整个PC市场,获得巨大成功,但是它却忽略了互联网的发展,被另外一家以生产浏览器软件而闻名的网景公司(Netscape)抢占了先机,它先于微软推出浏览器软件。当时,SUN公司以生产UNIX服务器为主,这种服务器可以用于网站建设,所以它始终坚持"网络就是电脑"(The Network Is the Computer)的信条。当时,SUN公司也尝试设计一种名为Java的程序语言,一开始准备将其用在家用电器市场的,Java代码灵活小巧,可移植性强,并能够跨平台操作,不局限于某种操作系统,1995年,互联网大行其道,SUN立刻意识到这是一个机会!因为Java语言结构新颖、可实时操作、而且安全性强,适合用于编写浏览器软件。由于SUN当时对开发软件产品尚缺乏信心,所以它免费将Java放在网上,任由人们使用,没有想到此举使Java获得极大的成功和好评。SUN公司的CEO斯科特?麦克尼利从此将自己称做是"JavaMan"。
微软为了打败网景(Navigator浏览器),跟SUN达成某项交易,SUN允许微软使用Java言来开发IE浏览器,当IE成功问世时,微软将IE捆绑进操作系统中,使得很多电脑用户不得不使用IE作为缺省的浏览器软件。网景受到强烈的冲激,1996年春,网景(Navigator浏览器)拥有87%的市场占有率,1998年就降到40%,最后它也不得不免费供用户使用,终于在1998年11月,网景(Navigator浏览器)被美国在线(AOL)收购。
那么原本是亲密战友的SUN与微软是如何翻脸无情?以至Java最后也被Windows无情地抛弃呢?

Java成了Windows中不受欢迎的客人
1996年9月的某个星期日,微软资深的软件工程师艾达姆.波茨瓦斯在几经考量之后,提笔给时任微软CEO的比尔.盖茨写了一封信,波茨瓦斯当时是微软浏览器部门的主管,在信中,他非常恳切地提醒比尔.盖茨注意一个正在形成的威胁,这个威胁不是来自别人,正是其盟友SUN公司创建的一种编程语言--Java,这种语言允许编程者一次性编写程序代码、就可以在多个不同的操作系统上运行(如从IBM的大型机到Sun公司的Unix服务器,再到WindowsPC机都能运行,甚至在手机平台上也可以);而不需要针对每个计算机硬件和操作系统配置的不同而改动程序代码,并且这种语言在网络上是安全的。在信中,他写到:"必须意识到Java不仅仅是一种语言,如果它仅只是一种语言,对微软是不会造成威胁的。我们愿意并且能够容易地为它建立最佳的表现形式,事情可以圆满解决了。但是事实上,Java绝不仅仅是一种语言,它是COM的替代者。"--而COM恰恰是Windows基于的编程模型。然后,波茨瓦斯用大约1000字解释了使用Java编程是多么容易,相反,当程序需要执行许多任务时,使用C++编程语言则要用到相当多的复杂的代码,这比Java麻烦得多。波茨瓦斯也提出了一些对抗Java的方法,其中一条是悄悄地为Java提供承├┱梗�沟糜肑ava编写的程序能够在Windows中工作得更好,但是在其它平台上却不能运行。他警告说这项工作应当以诱导而不是冲突的方式来进行,最重要的是微软必须意识到Java的力量,"我们首先必须承认Java正在与COM相竞争,然后想出对策,而不只是把头埋在沙子中逃避问题。"
盖茨在收到这封信时,正是他准备"闭关清修"的前几天,原来比尔.盖茨每年都要抽出一点时间来考虑微软长期发展战略,人称"思考周计划"。盖茨显然被这封信吓坏了,他第二天就回信了:"这可把我吓坏了。我不清楚微软的操作系统要为Java的客户应用程序代码提供什么样的东西,而这些东西将足够让它来取代我们的市场地位。了解这一点非常重要,是应该最优先考虑的事情。"(没想到,这封信成为几年后司法部针对微软的反托拉斯案的呈堂证供。)
于是,Java成了Windows中不受欢迎的客人,微软开始对其进行清扫,SUN又岂是好惹的?一场针尖对麦芒的好戏就开场了。
Java与Windows的殊死斗争

作为一对死对头,微软和SUN一直官司不断。1997年,Sun公司以歧视使用Java软件,旨在维持其视窗操作系统的垄断地位,违反反垄断法为由起诉微软,2001年1月,SUN胜诉,根据双方达成的和解协议,微软不得对Windows操作系统中包含的Java语言作任何改动,并获赔2000万美元。这是SUN首次与微软的正面交锋,谁想这为日后微软拒绝支持Java语言埋下了伏笔,因为理由很正当,既然你SUN不准我对Java进行改动,而随着操作系统的发展,不改动Java是适应不了新的形势,那只能弃用Java了。
然而,有关Java的事情还不算完,2001年年底,微软在推出新版操作系统Windows XP和新版IE时,故意不安装Java软件,2002年的3月8日,SUN公司向美国加州地区法庭提出起诉,称此举造成它直接经济损失高达10亿美元。根据反垄断法,原告可以要求被告支付实际损失三倍的赔偿,因此SUN如果打赢了这场官司,也许最多可以得到30亿美元的经济赔偿,看来SUN这回动真格的了!微软岂能甘心,干脆一不做二不休,开始了新一轮的报复,2002年6月,微软称从2004年起,微软的Windows操作系统将不再支持Java语言,并解释这样做的原因是考虑到安全问题。2002年7月,微软关闭了一个自动向Windows XP用户提供Java软件的站点,据微软称,此举是因为Sun公司声称微软没有权利通过在线方式发行Java软件,为了避免产生纠纷,只好停止此项服务。就在双方口水战日益升级之际,迎来了有关SUN诉微软案的第一次听证会。
SUN起诉微软的听证会被安排在2002年12月的第一周,当时,在巴尔的摩市下了近三年来最大的一场雪。整个城市几乎都停止运转。但是弗雷德里克?摩兹法官坚持要求开庭,并且要求几十位与案件有关的律师到场出席;据审判时一位目击者说,为了保证早上能够到庭,法官他自己在会议室中睡了一晚。
几周后,也就是2002年12月23日,摩兹法官发布了那份长达42页的判决书,他裁定微软公司必须在其Windows操作系统和IE中发布与其竞争的Java编程语言。这份裁定书可谓是司法界的一部力作,在平实的、以第一人称的叙述中,摩兹法官回顾了SUN和微软之间关于Java斗争的历史,充分展示了双方各自的论据,相当艺术地解释了为什么要求在Windows操作系统中提供对Java的支持是对相关各方最好的选择。从过去的情况来看,每当涉及复杂技术的诉讼时,法官经常在面对着术语时显得无所适从。但是,摩兹法官给人的印象却是对Java和.NET相当熟悉,而且他表现出强烈的支持SUN的立场,但是他那对微软不利的判决是有技术和商业上的事实作为基础的。
简而言之,摩兹法官的意见是:在微软的垄断下,Java拥有一个并不健全的市场,比如说,大部分PC上所安装的Java软件要么就是旧版本,要么就是仅适用于Windows的版本,这使得其它软件开发者对Java平台产生了厌恶的情绪,这些都是因为微软反竞争行为的结果,看来微软已经利用Windows的垄断地位来破坏SUN对Java的销售渠道。树立市场正义的唯一方法是纠正微软的所作所为,"阻止微软从它过去的错误中获得将来的利益!"
拉锯战仍在继续
虽然2002年12月,法官已经作出对SUN有利的判决,并且再一次召集双方律师,举行了特别听证会,2003年1月15日,摩兹法官下令微软必须在120天完成在其视窗软件中加载Java的工作。
2003年2月21日,微软正式提出反诉,称此案有违公平,微软公司在其上诉请求中声称,即使微软不在Windows系统中发布Java技术,Sun公司也不会马上就面临任何"不可挽回的伤害"。Sun公司则声称说,在Windows系统中发布Java技术是一个时间敏感性的问题,一再推迟可能会给Sun公司及其技术带来损害。美国第四巡回法院已经宣布将在今年4月3日举行初步庭审,以此看来,此案究竟如何了结,还是一个未知数。
Java作为一个跨平台水平,一经问世就受到人们的欢迎,据统计,全世界目前有200多万Java程序员。但即使Java获胜,也仍然耽误了最好的发展时机,希望微软早已经推.NET战略,并且C#语言就是专门针对Java开发出来的语言,微软的各种软件在市场上的占有率都很高,即使最终的裁决对Java有利,也不会改变微软目前雄踞软件世界的局面。
以微软、SUN的财力物力,对付诉讼的经验来看,一场拉锯战仍然是在所难免的了。
参考技术B Java语言的特性:

简单性:

* Java语言的语法特性类似于C++(有没有C++基础没关系,各有各得好处);
* Java语言摒弃了C++中容易引发错误的地方,例如指针和内存管理等;
* Java 提供了非常丰富的类库供我们使用(丰富不代表包罗万象,很多时候都需要自己写新的类库,我觉得Java更像是给我们提供了丰富的沙子和水泥,想要房子?好啊,你设计吧,设计完了自己盖。如果和C#比较一下,C#就像是地产商,想要房子?我这里有两居室、三居室和花园洋房,马上就能交钥匙,要哪个?)。

安全性:

* 不会引起致命的错误;
* 到目前为止,没有任何一种Java病毒(记得参加SUN公司的JavaOne大会,主持人跑出来非常兴奋的告诉大家:“到目前为止,还没有出现Java病毒。”);
* 基于网络的安全管理机制;

可移植性:

* Java是一种跨平台的开发语言(就像是金鱼要生活在鱼缸中,鱼缸却能放在不同的家中,金鱼跨平台了吗?没有,跨平台的是鱼缸。相同的道理,Java运行于虚拟机JVM上,JVM有Windows版、Linux版、Unix版等,所以Java就跨平台了)。

面向对象性:

* Java是一种纯面向对象OOP的编程语言(近年来OOP如日方中,其中Java起到了很大的推动作用,但Java不是第一个,也不是最后一个OOP语言)。有这么一句经典的,最令初学者头痛的概念:“万物皆为对象”,我在初学的时候就被这句话(忽悠)了一个月。

健壮性:

* 没有指针使Java 减少了内存出错的可能;
* 实现了真数组,避免数据覆盖;
* 异常管理机制。

多线程性:

* Java为我们提供了强大的多线程机制。

体系结构中立:

* Java是一种不带平台特点的语言(将Java编译成一种.class文件,可以在任何安装有JVM的机器上运行);

解释执行与高性能:

* Java 解释器能直接运行目标代码指令(评价:够用、绝对够用)。

分布式:

Java 有强大的基于网络的类库供我们使用(有很多著名的支持分布式运算的软件都是使用Java开发)。

动态性:

* 准确的讲Java不能称为动态语言(动态语言是指程序在运行时可以改变其结构),然而Java的反射机制赋予了它对类动态加载调用的能力,所以很多朋友都称Java为准动态语言。
参考技术C   Java是一种非常易于使用和学习的编程语言,Java的语法简洁明了。Java 不支持其他流行语言的复杂特性,如指针、存储类、运算符重载等。
  Java是一种纯面向对象的编程语言,它支持所有重要的面向对象编程特性,例如封装、多态、抽象和继承。Java
中几乎每个元素都被视为一个对象,所有数据和程序都驻留在对象和类中。
参考技术D JAVA。。。
呃我也是初学,我来说说我的看法吧
JAVA是一种纯面向对象的语言,不支持函数,所有的过程都是封装在类里面,JAVA提供的类非常多,比如像高精度类,排序都已经做好了,是一个非常成熟而且有效率的编程语言

注意我所说的效率不是指程序的执行效率而是程序员写程序的效率

JAVA正是因为太高级,所以程序的执行效率比不上C++,更比不上C,要占用相对较多的内存,所以要斟酌使用~

HBase是啥呢,有哪些特点呢?

HBase是什么呢,都有哪些特点呢?

参考技术A

Hbase是一种NoSQL数据库,这意味着它不像传统的RDBMS数据库那样支持SQL作为查询语言。Hbase是一种分布式存储的数据库,技术上来讲,它更像是分布式存储而不是分布式数据库,它缺少很多RDBMS系统的特性,比如列类型,辅助索引,触发器,和高级查询语言等待

那Hbase有什么特性呢?如下:

    强读写一致,但是不是“最终一致性”的数据存储,这使得它非常适合高速的计算聚合

    自动分片,通过Region分散在集群中,当行数增长的时候,Region也会自动的切分和再分配

    自动的故障转移

    Hadoop/HDFS集成,和HDFS开箱即用,不用太麻烦的衔接

    丰富的“简洁,高效”API,Thrift/REST API,Java API

    块缓存,布隆过滤器,可以高效的列查询优化

    操作管理,Hbase提供了内置的web界面来操作,还可以监控JMX指标

    什么时候用Hbase?

    Hbase不适合解决所有的问题:

    首先数据库量要足够多,如果有十亿及百亿行数据,那么Hbase是一个很好的选项,如果只有几百万行甚至不到的数据量,RDBMS是一个很好的选择。因为数据量小的话,真正能工作的机器量少,剩余的机器都处于空闲的状态

    其次,如果你不需要辅助索引,静态类型的列,事务等特性,一个已经用RDBMS的系统想要切换到Hbase,则需要重新设计系统。

    最后,保证硬件资源足够,每个HDFS集群在少于5个节点的时候,都不能表现的很好。因为HDFS默认的复制数量是3,再加上一个NameNode。

    Hbase在单机环境也能运行,但是请在开发环境的时候使用。

    内部应用

    存储业务数据:车辆GPS信息,司机点位信息,用户操作信息,设备访问信息。。。

    存储日志数据:架构监控数据(登录日志,中间件访问日志,推送日志,短信邮件发送记录。。。),业务操作日志信息

    存储业务附件:UDFS系统存储图像,视频,文档等附件信息

    不过在公司使用的时候,一般不使用原生的Hbase API,使用原生的API会导致访问不可监控,影响系统稳定性,以致于版本升级的不可控。

HFile

HFile是Hbase在HDFS中存储数据的格式,它包含多层的索引,这样在Hbase检索数据的时候就不用完全的加载整个文件。索引的大小(keys的大小,数据量的大小)影响block的大小,在大数据集的情况下,block的大小设置为每个RegionServer 1GB也是常见的。

探讨数据库的数据存储方式,其实就是探讨数据如何在磁盘上进行有效的组织。因为我们通常以如何高效读取和消费数据为目的,而不是数据存储本身。

Hfile生成方式

起初,HFile中并没有任何Block,数据还存在于MemStore中。

Flush发生时,创建HFile Writer,第一个空的Data Block出现,初始化后的Data Block中为Header部分预留了空间,Header部分用来存放一个Data Block的元数据信息。

而后,位于MemStore中的KeyValues被一个个append到位于内存中的第一个Data Block中:

注:如果配置了Data Block Encoding,则会在Append KeyValue的时候进行同步编码,编码后的数据不再是单纯的KeyValue模式。Data Block Encoding是HBase为了降低KeyValue结构性膨胀而提供的内部编码机制。

以上是关于Java编程的特点是啥呢的主要内容,如果未能解决你的问题,请参考以下文章

Python是啥呢?能拿来干嘛?

HBase是啥呢,有哪些特点呢?

Java是啥?Java到底能干嘛?

PDCA的运用特点是啥呢?

指针变量声明了后其默认值是啥呢,啥时候它的值才为“null”空呢?

Java:volatile的作用是啥呢?我的理解正确吗?