Tiobe公布了新一期编程语言排行榜。Java依旧是占据第一的位置,C语言紧随其后。值得注意的Objective-C持续发力,已经占到了第三的位置。咋一看榜单,前5条中C#下滑最快,从第3名下降到第五名。而其他语言都与之前没有变化。

Win7之家:微软称针对Java漏洞的攻击增长了14倍

欢迎你来到Java的世界,作为Java的第一篇文章不可免俗的要做一次介绍,这些东西往往比较枯燥所以我尽可能写的有故事趣味一点。对于初学者历史或者特性的东西浏览一遍有所了解即可,即使不知所云也没关系,更不需要记。本文从三个方面介绍一下Java

 

微软最新安全报告透露,针对Java漏洞展开攻击已经成为黑客的重点,上一季度Java攻击数量是2010年第三季度的14倍。黑客的主要目标是Oracle的Java虚拟机及其程序,占总数量的85%,袭击对象包括操作系统漏洞、HTML和脚本漏洞,攻击方式大多采用挂马形式,在暗中让用户通过Web浏览器运行恶意代码。

  • Java的发展简史
  • Java的特性
  • Java能做什么

图片 1

另外比较令人可喜的是,2010年一季度之后AdobeReader和Acrobat的漏洞下降了足足一半并继续保持着良好的安全记录,而微软Windows操作系统的漏洞则有增加,到2010年底还有两个高知名度的危急漏洞出现。

1991年Sun公司认为用嵌入式系统来控制消费类电子产品(例如机顶盒、电视机、收音机、微波炉、烤面包机等)在未来很有市场。于是Sun公司成立了一个名为“Green”的小组来开发一套新的控制系统。这个系统用什么语言来做呢?他们一开始考虑过用C++,但是C++太复杂了且API不健全。而且由于当时的各类设备的CPU和操作系统不同,内存也有限,要实现用于这些设备的控制系统,需要一种代码低消耗且平台无关的编程语言,所以C++并不能胜任。最后Green决定开发一门新的编程语言。Green小组最开始由两名程序员Patrick
Naughton和James Gosling,一名工程师Mike
Sheridan三人组成,后续有人员扩充。其中James
Gosling是最具代表性的人物,如今被称为“Java语言之父”。

最近一段时间,关于Java安全性的新闻层出不穷。被伤害的不光是普通计算机用户,甚至还包括苹果公司、美国政府。此次安全风波波及面之广,恐怕是Oracle始料未及的。

图片 2James
Gosling图片 3Green

1.黑客利用网页漏洞进行攻击

这门新的编程语言的风格很像C++,因为本身就是基于C++开发的新语言。Gosling把这种语言取名为“Oak”,灵感传说是他喜欢自己办公室外的橡树。但是Sun公司的人后来发现“Oak”已经是另一种计算机语言的名字,没办法注册商标。所以他们又想了另外几个名字,经过投票最后决定改名为“Java”。因为Java是印度尼西亚一个岛屿爪哇岛的名字,且该岛屿盛产的咖啡也叫Java。所以Java的logo是一杯热气腾腾的咖啡。后于1995年5月23日对外公布这门编程语言,标志着Java的诞生。

据国外安全研究机构称,当前的Java版本中包含了一个严重的安全漏洞,可能导致电脑在访问带有恶意代码的特定网页时被感染。Window系统中的所有主流浏览器都可能被利用并感染,其中也包括Chrome。该漏洞也存在于苹果最新的Mountain
Lion操作系统。

图片 4Java
logo

为此,苹果不得不单独发布Java相关更新,以保证Mac用户的安全性。素以跨平台性强著称的Java,也让所有运用他的人无处可藏。

另外Java的吉祥物叫“Duke”,每年的Java开发者大会大家都会穿着印有Duke的文化衫。

2.Java安全机制

图片 5Duke

Java
早期的安全框架强调的是通过验证代码的来源和作者,保护用户避免受到下载下来的代码的攻击。Java安全模型的前三个部分——类加载体系结构、class
文件检验器、Java虚拟机(及语言)的安全特性一起达到一个共同的目的:保持Java虚拟
机的实例和它正在运行的应用程序的内部完整性,使得它们不被下载的恶意代码或有漏洞的代码侵犯。相反,这个安全模型的第四个组成部分是安全管理器,它主要
用于保护虚拟机的外部资源不被虚拟机内运行的恶意或有漏洞的代码侵犯。这个安全管理器是一个单独的对象,在运行的Java虚拟机中,它在对于外部资源的访
问控制起中枢作用。

1992年的时候Green小组变成了一家Sun公司的全资子公司,名为“FirstPerson”。同年FirstPerson发布了他们的第一个产品叫“*7”,它是一个基于SPARC的手持无线PDA。

Java签名/证书机制,可以保障使用者,安全地调用外部提供的jar,防止你信任的jar被篡改。首先,Java的签
名,必须是基于jar包的。也就是说,你必须将你要提供的class,打包到jar里。然后,通过Java
提供的签名工具(jarsigner)对jar包进行签名,发布。

图片 6Star7

签名原理:使用非对称算法,生成一对公钥/私钥。

可惜Sun公司和其它消费品公司并不看好这个产品。另外FirstPerson从1993年到1994年花了一年半的时间都没能推销出Java这项技术。与此同时的万维网正在逐渐壮大,而浏览器正是推动Web发展的关键技术。Java开发者们很快意识到Java具有客户端/服务器模型中非常关键的中立、实时、可靠、安全等特性,于是他们决定开发一款浏览器。他们开发的浏览器一开始叫WebRunner后来改名为HotJava。HotJava是完全由Java编写的,这个浏览器最大的亮点是可以执行网页中的内嵌代码,这个技术称为Applet。而当时其它的浏览器只能显示静态的内容。Sun公司在1995年5月23日发布了HotJava(和Java语言同时发布),在当时引起了不小的关注并吸引来了许多新的Java开发者。但是HotJava除了Applet其它表现并不佳,且当时人们习惯使用浏览器是网景的Netscape
Navigator和微软的Internet Explorer。后来Sun为了推广Java
Applet推出了可以在其他浏览器实现Applet的浏览器插件。既然其他浏览器都能用Applet那HotJava就更没人用了。HotJava的最后一个版本是3.0版本,在网上搜索还能下载呢。我就好奇在Windows
XP系统上装了结果是下图这个样子。

3.Oracle应对Java漏洞危机

图片 7HotJava

甲 骨文软件质量保证经理Eric
Maurice透露,五个漏洞中有四个存在于桌面系统的Java We
Start应用和浏览器Java小程序中。其中三个被通用漏洞评分系统评为10级,这是很严重的事情:如果Java运行在Windows
XP这种默认以管理员身份运行的系统,那么黑客能够利用这些漏洞完全损害系统的保密性,完整性和可用性;在Linux或者Salaris这类以非管理员权
限运行的系统中情况会好一些。安全研究人员对剩下的一个漏洞也做出过说明,该漏洞影响服务器部署的Java安全套接字扩展(JSSE),基于Lucky
Thirteen攻击SSL/TLS实现。

1996年年初,Sun发布了Java的第一个正式版本,也就是JDK1.0(1995年只是发布了Java这门语言)。从此版本更新到现在已经是Java8了。下图是Java的版本更新历程和每个版本比较有代表性的新特性。读者如果是新人对这些新特性感到不知所云完全没有关系,这篇文章只需要你浏览,当你学了相应语法也可以回过头来看看会更有感觉。

新的Java 6
_update41可以从甲骨文网站下载,而不是Java.com,目前必须手动下载。但Java
6 安装程序的更新功能会提示用户下载并安装Java 7
_update15。这一切都在甲骨文的计划中。甲骨文之前在网站上宣布,将启动自动更新帮助Windows32位系统用户完成升级。甲骨文将加快其对
Java的修补速度。Maurice说,“甲骨文会继续加快Java更新发布速度,特别是帮助解决桌面系统浏览器的Java运行环境安全,以重树安全信
誉。”

图片 8

其实这次Java漏洞危机并不是第一次,之前2010年也有报道宣称Java漏洞会影响Windows运行安全。各位用户还是尽量及时更新自己的Java,作为开发语言中举足轻重的语言,Java的安全性还是值得信赖的。

到此关于Java的历史基本上讲完了,只剩下一个挺重要的事件。那就是2009年4月20日Oracle以74亿美元收购了Sun公司所有股份。也就是说Java平台现在属于Oracle。

前10名编程语言走势图

在说Java特性的时候,很多资料会只说优点不说缺点,甚至缺点说成优点。我不会这么干,Java是一个很成熟且实用的工具,但也不是十全十美的。关于Java特性我分为优点和缺点和其它三部分。具体如下:<pre>注:如果你是一名初学者,这些特性你应该看不懂。没有关系你非常正常,你先浏览一遍,等你看完整套教程你再回过头来看看。</pre>优点:

图片 9

  • 面向对象Java是一门面向对象的语言。面向对象经过这么多年的实践已经证明是当下最好的程序设计,更符合人们的思维习惯。
  • 跨平台跨平台指的是“一次编译,到处运行”,也就是程序员只需要写一份代码编译一次,就可以交给各个平台解释执行。跨平台可以说是Java的招牌特色。
  • 自动管理内存Java因为多了虚拟机这一层不仅实现了“一次编译,到处运行”这一美好特性,而且还提供了用于自动管理内存的垃圾回收机制(Garbage
    Collection,简称GC),这对于Java程序员来说是是一种释放。
  • 安全性在手动管理内存的语言例如C++中是很容易出现内存泄露问题的,但是Java的垃圾收集机制避免了这一安全问题。而且Java程序无法破坏分配给自己之外的其它系统内存,这也极大的提高了宿主系统的安全性。除此之外Java还有签名机制可以对诸多权限进行控制,例如文件读写。
  • 健壮性Java的编译器发展至今有非常完善的代码检测能力,能在编译期间排除绝大部分代码错误。
  • 多线程多线程不仅可以更有效的利用系统资源,而且可以实现程序监听,实时交互等功能。
  • 网络能力Java支持TCP/IP协议,能够通过网络上传与接收数据。
  • 动态性Java并不是一门动态语言,因为Java不能在程序运行过程中动态的修改程序结构或者变量的数据类型。但是提供了反射机制实现了在程序运行过程中动态获取类的信息。
  • 开源Java语言是开源的,可以下载源代码查看。
  • 丰富的代码库这个其实并不是Java语言本身的特性,而是因为Java用户太多,这么多年来留下来太多的可用代码。除了官方类库还有大量了第三方类库可以使用。这使得大部分功能都能在网络上找到解决方案,这就使得Java程序员能够快速实现某一功能。

20到50名语言排行

缺点:

图片 10

  • 性能较差Java因为虚拟机拥有诸多优势,但也因为要走虚拟机这一层相比其它编程语言性能差些。
  • 语法啰嗦Java的语法是特别啰嗦的,例如需要导入一堆包。再例如打印一句Hello
    World!是这样:

下面是第50到100的编程语言排名

(Visual) FoxPro, 4th Dimension/4D, ABC, Agilent VEE, Alice, Apex,
AutoIt, AutoLISP, bc, C shell, CL (OS/400), Clipper, Clojure, Dart,
Dylan, ECMAScript, Eiffel, Emacs Lisp, F#, Go, Groovy, Icon, IDL,
Inform, Informix-4GL, J, JScript.NET, Ladder Logic, LPC, MEL, MUMPS,
NATURAL, Oberon, OCaml, Occam, OpenCL, Oz, Pike, Q, REXX, S, sed,
Simula, Smarty, SPARK, VBScript, VHDL, WebDNA, xBase, XSLT

System.out.println("Hello World!");

原文链接:

Tiobe:2013年3月编程语言排行榜:有毒的Java


 

而在Groovy里只要这样:

println "Hello Groovy"

其它:

  • 语法严谨语法严谨包括两个方面:
    • 数据类型明确。一种数据类型占多少字节,能表示什么是明确的。并且声明之后也不能更换数据类型。
    • 语法明确。例如大小写敏感,一个语句的“;”不能省略,各种括号不能省略,访问权限必须写清楚等等。
  • Java是解释型语言Java从源代码.java到字节码.class是一个编译的过程,但是JVM运行程序是一个解释的过程。所以Java是一门解释型的语言。

在前面的Java版本更新历程的配图中指出Java1.2开始把Java分为J2SE(Java 2
Standard Edition,Java标准版)、J2ME(Java 2 Micro
Edition,Java微型版本)和J2EE(Java 2 Enterprise
Edition,Java企业版)三个体系。JavaSE就是指Java的基础语法和一些Java平台提供的基础类库。而后面两者可以看作是前者的基础上添加一些针对某个领域的类库和框架。并不是说有好几个语法版本的Java。开发时除了安装标准版的Java后两者还需要其它的扩展工具。JavaME是指做一些嵌入式设备(例如PDA、机顶盒、家用电器等)或者手机上的软件。这里的手机是指以前那些功能机并不是现在的Android手机。如下图。

图片 11

而JavaEE指的是做一些企业级的应用,例如大公司里的ERP系统或者网站。其中网站并不是你看到的网页的样子,而是指你看不到的后台逻辑。例如京东和天猫就是Java做的。

图片 12

Java发展至今这些体系并没有特别明确的区分,就是Java基础语法然后特定场合选择一些合适的工具嘛。而如果问学了Java一般做什么?最热门的有两个,其一就是上面所说的网站,另外就是Android。

图片 13

到现在Java已经20岁了,已经发展为最受欢迎的编程语言之一。官方宣称全世界有900万Java开发者。可见Java军团有多么庞大。热度可以参考TIOBE在2015年8月更新的编程语言排行榜和趋势图。数据显示Java目前处于榜首。

图片 14编程语言排行榜2015.08图片 15编程语言趋势表2015.08