内容简介:个人博客迁移至:大约在14年,因为工作需要我从使用了8年的C++语言开发的领域转向了红红火火的java。从事过多年程序开发的人应该都知道,有一句鼓励技术人员的话,大致上意思是“只要深耕一门编程语言,最终领悟到的编程的思想是相通的,你可以在理解的编程思想的基础上使用不同的语言作为工具”。的确,我多年的开发经验认同业内这个思路。编程语言作为软件开发者的工具,也有场景擅长领域,C++语言可以开发web类应用,更多的是在偏向计算,相对底层一点。因为C++保留了C语言与操作系统之间API直接对接的能力,可以比较方便的
个人博客迁移至: https://wangfengstar.github.io (所记录的学习笔记两边同步)
大约在14年,因为工作需要我从使用了8年的C++语言开发的领域转向了红红火火的java。从事过多年程序开发的人应该都知道,有一句鼓励技术人员的话,大致上意思是“只要深耕一门编程语言,最终领悟到的编程的思想是相通的,你可以在理解的编程思想的基础上使用不同的语言作为工具”。
的确,我多年的开发经验认同业内这个思路。编程语言作为软件开发者的工具,也有场景擅长领域,C++语言可以开发web类应用,更多的是在偏向计算,相对底层一点。因为C++保留了 C语言 与操作系统之间API直接对接的能力,可以比较方便的使用Linux/Unix这样的底层API实现网络通信、内存操作等功能。相比 java 语言,java语言以及围绕java类应用开发形成的体系,更像一个平台。
从C++转向java开发,感受到最大的区别还在于java领域JVM虚拟机独特性、java第三方库、和java各类框架实在是太多了。它会让你开始进入这个领域的时候不知所措,因为你会看到除了JDK本身提供的库的能力以外,借助第三方库的能力,可以提供更多的技术相关的功能。
对于想从事这个领域或者从C++这样语言开发转过来的小伙伴,个人建议一开始不需要被这样的庞大技术体系所困扰,还是要从语言等基础角度来理解,通过不断的实践来加深理解。相信有过两门以及以上的计算机语言开发者,更应该能体会思想相通,融会贯通的含义。
要理解将要转向的语言开发,不妨先从总体上来做个归类。
1.开发工具
1)C++开发:
C++语言不是跨平台的语言,因为底层实现直接与各操作系统遵循的一定标准实现API对接,但是这个标准在各个操作系统上支持或者实现的方式可能是不同,导致了C++语言开发的程序如果你需要支持在多个操作系统上面运行,比如Unix,Linux,Windows。那一开始都需要做好开发的程序上面适配,开发的库API、不同的编译器编译等。
以前笔者是从事Unix/Linux平台下的C++应用系统开发,尤其像商用Unix小型机,基本上都会存在一些不同需要关注的点,这是因为不同厂商比如IBM AIX,HP-UNIX,Sun Solaris他们在支持C++语言的编译器上不同,在一些操作系统层面的比如文件系统管理等可能也会存在不同的实现。当然在 Linux 上在一些 工具 的标准尽量实现了统一。
由于习惯所致,我们以前在开发C++应用上主要还是UE这样的文本编辑工具,同时定义一套适合自己应用的Makefile模板,本地写代码,远程Linux主机下make编译,Gdb调试等。当然微软推出的visual studio一直是比较优秀的开发IDE,除了支持windows平台开发以外也可以支持跨平台Linux开发。
2)Java开发:
java语言最大的变化就是支持跨平台,通过底下一层虚拟机规范推出的各类JVM来实现了跨平台的适配。java语言首先编译成字节码,统一运行在java的虚拟机平台上。因此在java语言开发的时候,无需太多关注运行不同的操作系统上的差异。
java的开发IDE工具有很多,比较流行的Eclipse、Intellij IDE,个人比较推荐使用Intellij IDE,从使用操作来看、功能支持上面来看Intellij IDE都感觉顺手很多,当然Eclipse也是很优秀的工具,很多的java开发人员都在使用。
2.开发语言
1)熟悉C++的开发的人员,在学习java语言方面应该会比较的容易上手。同样是面向对象的编程语言,在类设计、对象化编程方面大方面不会有太大的区别。
2)但是两门语言本身在细节本身还是有些差异的,重点几个点如下:
a. Java语言中在实现多态特性上更推荐使用接口类模式,java把接口模式在语言层面实现了支持,通过关键字interface来实现接口定义,通过implements关键字来实现各类接口类定义。另外在类继承等语言特性上面也有些支持的细微差别,注意在语言学习上关注下这些细节。后面文章会一一记录一些需要关注的点。
b. Java语言的第三方库非常的多,对于转向java的开发者,一开始建议不需要被明目繁多的各类库所困扰,主要集中精力还是在JDK原生提供的API上面,最好在使用的同时能深入JDK源码对这些IO、线程等的API内部实现有所理解,这样更有利于对语言使用的理解,也能再理解为何第三方库会不断的出现,解决一些场景下原生API无法或者性能等问题。
c. Java语言在支持编程开发上跟C++的细节区别还有很多,包括在关键字能力支持上,java的IO模型、内存管理模型、线程模型等后面的文章会记录使用过程中的一些差异点。
3.重点关注JVM
java语言底层运行在JVM上,JVM也决定了java应用相应的性能和稳定性,所以对于C++转过来的程序员,有条件和精力的不妨深入一下JVM了解一下实现的机制,对做好java应用开发还是很有帮助的。
在转变的前期,不妨就先重点熟悉这三个方面,先别陷入java一系列框架中去,否则一开始就会被淹没在这个技术平台中不知所措。
那么,我们先从Java的语言基础开始这场开发之旅吧!
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
原文: https://wangfengstar.github.io/2017/12/24/C++%E7%A8%8B%E5%BA%8F%E5%91%98%E5%AD%A6%E4%B9%A0%E5%92%8C%E4%BD%BF%E7%94%A8java-%E5%9F%BA%E7%A1%80%E7%AF%87.html
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Java 程序员必读核心书单(基础版)
- 干货|前端程序员容易出错的基础知识
- 程序员练级攻略(2018):前端基础和底层原理
- 程序员必备基础:Git 命令全方位学习
- 90%的程序员,这些基础知识都没学好
- 基础软件研发,可能是中老年程序员的最后堡垒
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法竞赛入门经典(第2版)
刘汝佳 / 清华大学出版社 / 2014-6-1 / CNY 49.80
《算法竞赛入门经典(第2版)》是一本算法竞赛的入门与提高教材,把C/C++语言、算法和解题有机地结合在一起,淡化理论,注重学习方法和实践技巧。全书内容分为12 章,包括程序设计入门、循环结构程序设计、数组和字符串、函数和递归、C++与STL入门、数据结构基础、暴力求解法、高效算法设计、动态规划初步、数学概念与方法、图论模型与算法、高级专题等内容,覆盖了算法竞赛入门和提高所需的主要知识点,并含有大量......一起来看看 《算法竞赛入门经典(第2版)》 这本书的介绍吧!