Java语言的个人理解(比价深层次吧)

大四的生活确实十分的奢靡,不锻炼,不读书,几乎就是当一天和尚撞一天钟的生活,太颓废了,还好自己不是这个样子,不过身体确实差了很多,昨天跑了一圈内环(4KM),今天就走不动路了,所以还是过一些比较充实的生活。还是回到学习上来吧,这一节主要的是“水”(粤方言)一下关于Java的宏观知识。

作为Java语言的爱好者,应该对于Java语言有着比较深入的认识,不但要认识到这门编程语言的优点,也应该关注他的缺点。这样才会让我们在实际的开发中避开这些缺点,或者是找一些其他比较好的方法进行那个替换。同时呢,还应该对于语言的未来发展趋势有一个很好的把握。

自由开源之路

Java语言是Sun公司私有的实现的,并且有Sun公司制定标准。在相当长的一段时间内,Sun都是Java的标准,而且是主导这门语言的大哥。但是这样的发展模式这样不能够满足所有的市场需求。同时使用厂家的平台系统使用的是Java,而且都是核心业务,这就难免让企业产生一定的顾虑:我们的核心业务都是基于Java平台构建的,但是这个平台本身确实其它一家公司的私有技术,你哪一天抽风,不让我们使用了,我们岂不是悲剧了,所以Sun公司开始了Java平台的开放化过程。其实这也正是Java之所以如此盛行的关键因素。

计算机的发展,有两个东西我特别推崇,一个是Linux之父Torvalds,因为他的开放自己的研究的linux内核源代码,并且依靠互联网平台作用,更新维护自己的linux内核,才有今天各种免费的linux操作系统,而且Android OS也是基于linux内核的操作系统(虽然我只是linux的菜鸟);再者就是Java语言,也是凭借社区的力量发展起来的,并且自由开源。对于这两种技术,我超喜欢,所以在大二上的时候开始学习Java语言,而且一直不断的深入,在学习Java的时候,每当深入的学习,就会发现自己需要学习的东西还有太多太多。最近发现于是王高层走,于是发现太多的东西,根本学不过来,不过这些东西都是可以很快的掌握。于是我转向了底层,也就是语言本身的实现。因为几乎所有的Java的东西都是开源的,所以我也想深入到源代码级别研究这些东西,于是昨天我下载来openJDK的源代码,感觉超厉害的样子,自己慢慢研究! Linux的话,我也会继续深入的学习下去。

回到Sun公司的公开Java的实现上,Sun公司在后来将Java 内部实现和标准几乎完全公布,除了少部分因为涉及版权,但是这些也是可以在Java社区找到相应的替代品。同时公布自己的Java和JVM规范,于是开源社区根据这一标准实现了一个叫做OpenJDK的Java自由开源实现版本。从此企业就不再担心自己会被Java“掐住脖子”了。

Coin项目:为什么有这个项目呢?这个和Java语言的发展有很大的关系。OpenJDK的Java自由开放源代码的实现,同时OpenJDK中有一个Coin组织,引用官方的话“The goal of Project Coin is to determine what set of small language changes should be added to JDK 7.”所以Coin在Java升级中起到了很关键的作用。而且Coin依靠的不是什么国际组织,而是开放的平台社区。这也是Java为什么如此流行的最重要的原因。

  Java为了走的是平台路线而不仅仅是一种语言

对于Java语言的认识我们应该更加深入,Java的运行效率是比较差的,因为他是居于JVM运行的,JVM则是使用C/C++实现的,所以造成了效率比C/C++低。之后有很多的开发语言比如Ruby, Python等等有专门的JVM运行版本Jruby,Jython,他们将自己的源代码编译成为标准的字节码,就可以运行在JVM上,给Java语言本身带来了相当大的挑战。

  但是Java语言不会就此死掉,相反Java语言做的是一个平台而不是一种语言,这些语言只要运行在JVM上,Java就会一直盛行下去。很多的语言支持JVM运行,是因为历史的原因,在Java社区中有大量优秀的JAVA包,这些JAR包是字节码,可以直接在JVM上面运行,其他语言就为了使用这些JAR包,所以将自己的源代码也编译成符合标准的字节码,运行在JVM上面,这样就可以调用那些开源的JAR包。20多年的发展,Java语言中有大量的资源是不能够随时被其他的编程语言所替代,所以依托JVM运行标准的字节码,将Java做成一个平台,而不仅仅是一种语言。

  Java中的效率和C/C++比起来确实比较低效,Java如此好的封装机制,带来了很大的优点,但是也正是这个原因造成的Java效率的低下;同时还有比较敏感的内存管理,Java中屏蔽了底层的实现,而不像C/C++那样,对于程序员透明。其实C/C++的内存管理掌握之后反而到感觉的简单,因为就是申请一块内存就对应的释放一块内存,就没了;但是Java的内存管理真的很头疼的,不要以为Java程序就不用考虑内存管理了,如果这样,在大型项目中,我们的程序就可能直接死掉,因为分配内存失败。同时还可能会因为JVM一直忙碌于回收内存,这样降低程序的性能,总之就是很悲剧!也正是因为这一点,现在有点不怎么喜欢Java了。

  以上就是目前对于Java语言的理解看一些看法,不同的时期,不同的自己,对于同一件事情也就会有不同的认识,将来的话,也许对于Java语言会有一些新的认识,也许就在明天!

追寻梦的飞飞

2014.04.02 于广州

Java语言的个人理解的更多相关文章

  1. 对于JAVA语言的一点理解

    java作为一门面向对象的语言,现在常常被用于企业服务器端的后台开发.同时,C语言可能更多地是用于嵌入式的开发,所谓的嵌入式就是航天飞机上的设备软件之类的东西.但是,我逐渐发现,我们平时所说的java ...

  2. 【Java】「深入理解Java虚拟机」学习笔记(1) - Java语言发展趋势

    0.前言 从这篇随笔开始记录Java虚拟机的内容,以前只是对Java的应用,聚焦的是业务,了解的只是语言层面,现在想深入学习一下. 对JVM的学习肯定不是看一遍书就能掌握的,在今后的学习和实践中如果有 ...

  3. java语言浅显理解

    从厉害的c语言.到经久不衰的java语言.到不太火的安卓和IOS,到当下流行的python,这些都是软件开发中的一员. 之前在传智播客上的免费视频资源上,听了老师对java语言的介绍,感觉挺好了.今天 ...

  4. 《深入理解Java 7核心技术与最佳实践》读书笔记(2) Java语言动态性引言

    Java语言是一种静态类型的编程语言.静态类型的含义是指在编译时进行类型检查.Java源代码中的每个变量的类型都要显式地进行声明.所有变量.方法的参数和方法返回值的类型在程序运行之前就必须是已知的.J ...

  5. Java语言中的面向对象特性总结

    Java语言中的面向对象特性 (总结得不错) [课前思考]  1. 什么是对象?什么是类?什么是包?什么是接口?什么是内部类?  2. 面向对象编程的特性有哪三个?它们各自又有哪些特性?  3. 你知 ...

  6. 用Java语言编写一个简易画板

    讲了三篇概博客的概念,今天,我们来一点实际的东西.我们来探讨一下如何用Java语言,编写一块简易的画图板. 一.需求分析 无论我们使用什么语言,去编写一个什么样的项目,我们的第一步,总是去分析这个项目 ...

  7. 20145205 java语言实现数据结构实验一

    数据结构实验要求 综合类实验设计3 已知有一组数据a1a2a3a4--anb1b2b3b4--bm,其中ai均大于bj,但是a1到an和b1到bm不是有序的,试设计两到三个算法完成数据排序,且把bj数 ...

  8. 瘋耔java语言笔记

    一◐ java概述                                                                                        1.1 ...

  9. Java中static的理解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

随机推荐

  1. sass基本用法(转载)

    SASS入门教程及用法指南 2014年8月27日 8489次浏览 作为前端开发人员,你肯定对css很熟悉,但是你知道css可以自定义吗?大家都知道,js中可以自定义变量,css仅仅是一个标记语言,不是 ...

  2. hdu 1394 Minimum Inversion Number(树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意:给你一个0 — n-1的排列,对于这个排列你可以将第一个元素放到最后一个,问你可能得到的最 ...

  3. storm入门(一):storm编程框架与举例

    基础 http://os.51cto.com/art/201308/408739.htm   模型 http://www.cnblogs.com/linjiqin/archive/2013/05/28 ...

  4. Unity : Ran out of trampolines of type 2

    Unity 导出游戏到 iOS 平台,当时选择的设置是 mono2x, 结果游戏各种莫名其妙的崩溃,再崩溃, 几乎运行不到一分钟就崩溃,而在 editor 和 android 平台都是正常的. 查看出 ...

  5. 基于OpenCv的人脸检测、识别系统学习制作笔记之三

    1.在windows下编写人脸检测.识别系统.目前已完成:可利用摄像头提取图像,并将人脸检测出来,未进行识别. 2.在linux下进行编译在windows环境下已经能运行的代码. 为此进行了linux ...

  6. 数据库、数据表的创建SP2

      本人前一个版本的数据库.数据表的创建由于不是很详细,于是通过细心的修订,已经修复了很多Bug,希望这篇文章能够给大家一些帮助 --代表注释,相当于C#里的// --切换到master数据库,目的是 ...

  7. linux启动流程

    看了深入理解linux内核一书的最后对linux启动流程的介绍,下面就把我能理解的写一下吧: bios(硬件加电自检POST,寻找第一个启动设备) the boot loader(可以从硬盘启动也可以 ...

  8. E9相关技术链接

    1.飞思卡尔i.MX6q安装ubuntu14.04操作系统:http://demo.netfoucs.com/bzw073/article/details/42551399 2. DS-5社区版安装: ...

  9. Android 自定义View 三板斧之三——重写View来实现全新控件

    通常情况下,Android实现自定义控件无非三种方式. Ⅰ.继承现有控件,对其控件的功能进行拓展. Ⅱ.将现有控件进行组合,实现功能更加强大控件. Ⅲ.重写View实现全新的控件 本文来讨论最难的一种 ...

  10. XHEditor(MVC4+DWZ) 部分问题的解决

    百度上下载了xheditor1.2.1 一.使用方法: 1.把解压的目录copy到VS中; 2.在需要用的View页面中引用js <script src="~/xheditor/xhe ...