Java语言的个人理解
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语言的个人理解的更多相关文章
- 对于JAVA语言的一点理解
java作为一门面向对象的语言,现在常常被用于企业服务器端的后台开发.同时,C语言可能更多地是用于嵌入式的开发,所谓的嵌入式就是航天飞机上的设备软件之类的东西.但是,我逐渐发现,我们平时所说的java ...
- 【Java】「深入理解Java虚拟机」学习笔记(1) - Java语言发展趋势
0.前言 从这篇随笔开始记录Java虚拟机的内容,以前只是对Java的应用,聚焦的是业务,了解的只是语言层面,现在想深入学习一下. 对JVM的学习肯定不是看一遍书就能掌握的,在今后的学习和实践中如果有 ...
- java语言浅显理解
从厉害的c语言.到经久不衰的java语言.到不太火的安卓和IOS,到当下流行的python,这些都是软件开发中的一员. 之前在传智播客上的免费视频资源上,听了老师对java语言的介绍,感觉挺好了.今天 ...
- 《深入理解Java 7核心技术与最佳实践》读书笔记(2) Java语言动态性引言
Java语言是一种静态类型的编程语言.静态类型的含义是指在编译时进行类型检查.Java源代码中的每个变量的类型都要显式地进行声明.所有变量.方法的参数和方法返回值的类型在程序运行之前就必须是已知的.J ...
- Java语言中的面向对象特性总结
Java语言中的面向对象特性 (总结得不错) [课前思考] 1. 什么是对象?什么是类?什么是包?什么是接口?什么是内部类? 2. 面向对象编程的特性有哪三个?它们各自又有哪些特性? 3. 你知 ...
- 用Java语言编写一个简易画板
讲了三篇概博客的概念,今天,我们来一点实际的东西.我们来探讨一下如何用Java语言,编写一块简易的画图板. 一.需求分析 无论我们使用什么语言,去编写一个什么样的项目,我们的第一步,总是去分析这个项目 ...
- 20145205 java语言实现数据结构实验一
数据结构实验要求 综合类实验设计3 已知有一组数据a1a2a3a4--anb1b2b3b4--bm,其中ai均大于bj,但是a1到an和b1到bm不是有序的,试设计两到三个算法完成数据排序,且把bj数 ...
- 瘋耔java语言笔记
一◐ java概述 1.1 ...
- Java中static的理解
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...
随机推荐
- [.Net] 通过反射,给Enum加备注
今天和大家分享一个给Enum加备注的技巧,话不多说,先上一段代码: namespace TestReflector.Model.Entities { public class UserInfo { p ...
- 使用TableViewRow完成下拉菜单效果
在TableViewRow标签中增加一个属性opened(自己定义的)=true or false 用于标记当前row的状态 然后用table_view.deleteRow()方法 参数 ...
- webkit内核中的一些私有的meta标签
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0&q ...
- js二级导航下拉菜单
<!DOCTYPE html> <html> <head> <title>导航列表</title> <meta http-equiv= ...
- 如果你觉得我的博客对你有帮助,请帮忙加点我所在团队博客访问量http://home.cnblogs.com/u/newbe/
RT http://home.cnblogs.com/u/newbe/ 跪谢~
- ios 随记录
1. 设置全局的就不写了.当单个VC需要的时候.一般是这样子. /* 设置StatusBar的样式,UIStatusBarStyleDefault与UIStatusBarStyleLightConte ...
- WIN8 平台应用隐私声明
隐私权声明 本应用连接网络仅为控制硬件设备,不会收集你的个人信息,也不共享你个个人信息. 应用名称 雅典娜监控平台移动客户端 关于本应用 本应仅为控制设备应用,不关注任何配置相关信息,所有数据均来自服 ...
- LINUX btmp 日志(lastb 命令)
Linux下/var/log/btmp文件: 今天查看了一下服务器,发现/var/log/btmp日志文件比较大,搜索一下,此文件是记录错误登录的日志,就是说有很多人试图使用密码字典登录ssh服务,此 ...
- LNMP 部署
一.防火墙配置 CentOS 7.x默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.servic ...
- android更换工具链
欢迎转载opendevkit文章, 文章原始地址: http://www.opendevkit.com/?e=73 android编译系统是跟随android源码一起发布的,使用了gcc编译器,也就是 ...