Java历史由来
Java已经有20多年的历史了,甚至更久!虽然年事已高,但是,如今在程序语言中,Java任然是排名第一的!它的实用性、性能和向后兼容性都彰显其价值所在。
1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言。希望用于控制嵌入在有线电视交换盒、PDA等的微处理器
1994年将Oak语言更名为Java
1998年JDK1.2时,更名为Java 2 Platform
分为标准版J2SE,企业版J2EE,微型版J2ME
Java 既安全、可移植,又可跨平台,而且人们发现它能够解决Internet 上的大型应用问题
Internet使Java成为网上最流行的编程语言
Java对Internet的影响也意义深远
B/S的兴起 & C/S的没落
任职于太阳微系统的詹姆斯?高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言,应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
Java为什么这么受开发者的青睐呢?
回顾过去十五年的成果,Java一直是数一数二的。Java已经占据了曾经C语言所拥有的地位,而C语言在Java开始流行之前一直是最受关注的语言。(事情变化多快啊!早在1986年Lisp语言还是排名第二的语言而Ada排名第三)。TIOBE指数也刚刚宣布2015年是Java语言年,而十年之前,Java就已然获此殊荣。我认为Java之所以获得这么多的青睐,是有一定原因的,下面我们就来探讨一下Java的优势:
简单实用
Java语言简单是指这门语言既易学有好用。不要将简单误解为这门语言很干瘪;如果你学习过 C++语言,你会感觉 Java很眼熟,因为 Java中许多基本语句的语法和C++一样,像常用的循环语句,控制语句等和 C++几乎一样,但不要误解为 Java 是C++的增强版,Java 和C++是两种完全不同的语言,他们各有各的优势,将会长期并存下去,Java 语言和 C++语言已成为软件开发者应当掌握的语言。如果从语言的简单性方面看,Java要比C++简单,C++中许多容易混淆的概念,或者被Java弃之不用了,或者以一种更清楚更容易理解的方式实现,例如,Java不再有指针的概念。
自动垃圾回收(Garbage Collection)
C++语言被用户诟病的原因之一是大多数C++编译器不支持垃圾收集机制。通常使用C++编程的时候,程序员于程序中初始化对象时,会在主机内存堆栈上分配一块内存与地址,当不需要此对象时,进行析构或者删除的时候再释放分配的内存地址。如果对象是在堆栈上分配的,而程序员又忘记进行删除,那么就会造成内存泄漏(Memory Leak)。长此以往,程序运行的时候可能会生成很多不清除的垃圾,浪费了不必要的内存空间。而且如果同一内存地址被删除两次的话,程序会变得不稳定,甚 至崩溃。因此有经验的C++程序员都会在删除之后将指针重置为NULL,然后在删除之前先判断指针是否为NULL。
C++中也可以使用“智能指针”(Smart Pointer)或者使用C++托管扩展编译器的方法来实现自动化内存释放,智能指针可以在标准类库中 找到,而C++托管扩展被微软的Visual C++ 7.0及以上版本所支持。智能指针的优点是不需引入缓慢的垃圾收集机制,而且可以不考虑线程安全的问题,但是缺点是如果不善使用智能指针的话,性能有可能 不如垃圾收集机制,而且不断地分配和释放内存可能造成内存碎片,需要手动对堆进行压缩。除此之外,由于智能指针是一个基于模板的功能,所以没有经验的程序 员在需要使用多态特性进行自动清理时也可能束手无策。
Java语言则不同,上述的情况被自动垃圾收集功能自动处理。对象的创建和放置都是在内存堆栈上面进行的。当一个对象没有任何引用的时候,Java的自动垃圾收集机制就发挥作用,自动删除这个对象所占用的空间,释放内存以避免内存泄漏。
注意程序员不需要修改finalize方法,自动垃圾收集也会发生作用。但是内存泄漏并不是就此避免了,当程序员疏忽大意地忘记解除一个对象不应该有的引用时,内存泄漏仍然不可避免。
可扩展性/性能/可靠性
在超过20年和每年数以千计的开发者的推动和发展,Java已经成为了一个坚实的平台,可以赶上甚至超过本地代码的水准(多亏了JVM使用了动态而非静态代码解析的一些优化)。当谈及可扩展性,看看使用Java语言的一些大型企业:Twitter(抛弃了JVM的Ruby-on-Rails,因为它不再能够扩展),Spotify,Facebook,Scalesforce,eBay,当然还有Oracle。Hadoop,Cassandra和Spark,大数据工程的基础框架,无不使用Java或者Scala并且在JVM虚拟机上运行的。如果你想要良好的拓展性和性能,Java和JVM是最好的选择。
多线程
多线程 Java的特点之一就是内置对多线程的支持。多线程允许同时完成多个任务,实际上多线程使人产生多个任务在同时执行的错觉。
因为,目前的计算机的处理器在同一时刻只能执行一个线程,但处理器可以在不同的线程之间快速地切换,由于处理器速度非常快,远远超过了人接收信息的速度,所以给人的感觉好象多个任务在同时执行。C++没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序的设计。
Java语言具有的强大功能还有许多,在平时应用中也有很多的体现。Java最让你觉得惊喜的功能是什么呢?
















还没有评论,来说两句吧...