首先要讲的作为编程语言榜单上前茅,而且自己也想通过对比学习Java的方式,来重新理解OBP(面向对象编程)的理念.
一.选择大于努力为什么学习Java? Java可以干吗?
1-Java编程语言在编程语言的编程特性
(1)继承了C++语言面向对象技术的核心,舍弃C++的部分特性,
Java编程语言的风格十分接近C++语言。继承了C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的指针,改以引用替换,同时移除原C++与原来运算符重载,也移除多重继承特性,改用接口替换,增加垃圾回收器功能。在Java SE 1.5版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。
(2)实现了“一次编写,到处运行”的跨平台特性
Java语言的第二个特性就是跨平台性,也就是说使用Java语言编写的程序可以在编译后不用经过任何更改,就能在任何硬件设备条件下运行。这个特性经常被称为“一次编译,到处运行”。
执行Java应用程序必须安装Java Runtime Environment(JRE),JRE内部有一个Java虚拟机(Java Virtual Machine,JVM)以及一些标准的类库(Class Library)。通过JVM才能在电脑系统执行Java应用程序(Java Application),这与.Net Framework的情况一样,所以电脑上没有安装JVM,那么这些程序将不能够执行。
(3)自动垃圾回收(Garbage Collection)
Java语言则不同,上述的情况被自动垃圾收集功能自动处理。对象的创建和放置都是在内存堆栈上面进行的。当一个对象没有任何引用的时候,Java的自动垃圾收集机制就发挥作用,自动删除这个对象所占用的空间,释放内存以避免内存泄漏。
注意程序员不需要修改finalize方法,自动垃圾收集也会发生作用。但是内存泄漏并不是就此避免了,当程序员疏忽大意地忘记解除一个对象不应该有的引用时,内存泄漏仍然不可避免。
不同厂商、不同版本的JVM中的内存垃圾回收机制并不完全一样,通常越新版本的内存回收机制越快,IBM、BEA、SUN等等开发JVM的公司都曾宣称过自己制造出了世界上最快的JVM[来源请求],JVM性能的世界纪录也在不断的被打破并提高。
2-Java语言排行榜的”大哥”地位
最为语言排行榜的”大哥”,无论是在应用还是求职上都是比较hot的,直接上图
3-编程语言的横向对比
(这个后期回针对Java C++ Python C#等对比性讲解)
2-Java的应用方向:
Web开发
Web开发语言很多,Java是其中之一。Java在开发高访问、高并发、集群化的大型网站方面有很大的优势,例如人人网、去哪儿网、美团等。
Android开发
Android是全球最大的智能手机操作系统,2014年第三季度Android手机出货量占比达到84%。Android应用的主要开发语言就是Java。
Android从2010年才开始走入大众视野,虽然最近几年发展非常快速,但人才积累却没有跟上,优秀的Android开发工程师仍然存在不小的缺口,这也是导致Android开发人员工资高,难招人的原因。
客户端开发
Java客户端开发主要面向政府、事业单位和大型企业,如医疗、学校、OA、邮箱、投票、金融、考试、物流、矿山等信息方面的系统。
但是客户端开发往往不是这些企业的主要业务,而是为主要业务提供辅助,以便企业能够更加高效的运营,因此必然不是企业的主要部门,虽然待遇可能和前面两者差不多,但是前景却不看好,企业没有精心打磨这些产品并推向市场的动力,都是内部员工使用,能用就好。
以上资料基本是本人网上整理,最近一段时间的”微信”小程序不知道会不会对Andriod的开发有什么影响,还有就是由于信息的时效性,可能会有不同和披露,欢迎来评论和交流.
二.凡事预则立Java学习大纲(学习路线图)
这个个人认为比较重要的,由于网上的学习资源真的很多,真心的说都不知道怎么选择,尤其网上资源不是很系统,质量好可能有其他的门槛,自己想来自己做一个自学的学习日志,一方面来介绍作为”小白”的我一步步的学习时记录和旅程,另方面,在这个不需要重复制造”轮子”的年代,本人希望自己学习之路可以给后面的人有些启发和帮助,最好是少走一些弯路吧.
该图来自于<<疯狂Java讲义>>(李刚)截图[不知道这个算不算盗图啊],个人而言的话这个路线图规划的路线有些远,但是具有很好的参考价值,同时可以根据个人的实际目的来变化.
个人建议是通过51CTO学院的职业路线图选择Java的学习路线,个人觉得比较好
.
送上连接:http://edu.51cto.com/roadmap/view/id-65.html
个人也打算开始,自己编写一个关于自己符合自己实际情况的Java学习路线图,但是由于时间限制的问题和这个文档必须在尽快赶出来的,后期才能奉上.
三.我思故我在Java个人学习的想法
网上看了不少的文章和学习建议,多是一些前辈的建议,什么新手必备……,入门……,自己写这个的文档的原因,就是想通过自己的学习经历来说明,尽量还原一个真实的学习经历。
写这个目的很简单,记录自己的学习旅程,让看这个文档的学习有些启发;同时也是想锻炼一下,自己写一下技术类博客的想法,自己迟迟没有写的原因是因为自己还不是大大神,有时候,觉得自己没有太多的发言权,同时觉这件事再不做也没有时间做了。
所以这个文章也是在最初很简单的想法中出来的个人的一点想法是坚持的写下去,虽然自己写的不是很好但是我希望在后期的阶段中能够有所进步。