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. AppFuse3.5对接oracle数据库

    AppFuse是一个使用Java语言开发web应用系统的集成框架.java开发人员最头痛的事情就是面对大量的框架不知该如何选择.这些框架性能如何,兼容性如何等等都需要筛选比较.Appfuse作者Mat ...

  2. Build Android Webrtc Libjingle Library On Ubuntu

    Our team is developing an app to help people solve problem face to face. We choose webrtc protocol a ...

  3. && 和 ||的区别

    如果&&左侧表达式的值为真值,则返回右侧表达式的值:否则返回左侧表达式的值. 如果||左侧表达式的值为真值,则返回左侧表达式的值:否则返回右侧表达式的值. 1       如果第一个操 ...

  4. int 和 string 相互转换(简洁版)

    string int2str(int x) { return x ? num2str(x/10)+string(1,x%10+'0') : "";} int str2int(str ...

  5. C++查找指定目录下所以指定类型的文件

    /*************************************************************** 函数名称:FindFile 查找指定目录下指定文件 输入:fileNa ...

  6. Python成长笔记 - 基础篇 (十)

    本节内容 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queu ...

  7. Worse Is Better

    最近做的几件事和最近刚读到这篇文章(http://www.jwz.org/doc/worse-is-better.html)让我重新认识了KISS和这个所谓的Worse-is-better原则. 软件 ...

  8. 工作当中实际运用(3)——js原生实现鼠标点击弹出div层 在点击隐藏

    function onmou(){ var divs=document.getElementById('kefuDV');//获取到你要操作的div if (divs.style.display==& ...

  9. Paxos算法细节详解(一)--通过现实世界描述算法

    Paxos分析 最近研究paxos算法,看了许多相关的文章,概念还是很模糊,觉得还是没有掌握paxos算法的精髓,所以花了3天时间分析了libpaxos3的所有代码,此代码可以从https://bit ...

  10. Cron表达式备忘

    Cron表达式(在Quartz.net里面会用到) 由7段构成:秒 分 时 日 月 星期 年(可选)"-" :表示范围  MON-WED表示星期一到星期三"," ...