Java源码,编译后会生成一种.class文

相信大家已经了解到Java具有跨平台的特性,可以“一次编译,到处运行”,在Windows下编写的程序,无需任何修改就可以在Linux下运行,这是C和C++很难做到的。


那么,跨平台是怎样实现的呢?这就要谈及Java虚拟机(JavaVirtualMachine,简称JVM)。


JVM也是一个软件,不同的平台有不同的版本。我们编写的件Java源码,编译后会生成一种.class文,称为字节码文件。Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序。


而这个过程中,我们编写的Java程序没有做任何改变,仅仅是通过JVM这一”中间层“,就能在不同平台上运行,真正实现了”一次编译,到处运行“的目的。


经常在网上看到各种标题为“Java程序员”、“PHP程序员”、“C/C++程序员”的招聘帖子,但我感觉这种招聘方式,很难找到好的人才。语言只是一种工具,对一个聪明的程序员来说,用没用过什么工具主要是由他原来的工作需要决定,并不能代表他全部的技能。


另外,一个软件产品往往涉及很多方面的知识,比如网络、数据库、Cache、编译环境工具等。如果这些必要基础知识不足,很难很好的独立完成一个产品的某个部分。


另一方面,一个人的聪明程度、对新知识的好奇心、自我驱动意识、为问题找到最佳解决方案的决心,才是他能不能成为一个好程序员的关键。举个例子,我在担任JPushCTO的时候,有位同事本来是服务器端以C语言为主做开发的,完全没有过iOS开发经验,但他表现出对iOS开发很有兴趣,并且在做服务器端开发时,表现出良好的学习能力,后来我把他调到iOS组,负责iOSSDK和APNs相关的工作,结果只花了几个星期,iOSSDK的稳定性大幅提升,解决了多个致命问题。


之所以用Java作为标题,一是现在以Java语言为主的工作非常之多,另外在学校里就以学习Java为主的人也越来越多。但我发现,从学校就以学习Java这种高级语言为主的人,很多基础知识比较薄弱。高级语言掩盖了太多细节,提高了生产力,但在学习阶段,却不利于基础知识累积。


软件行业是一个非常强调人的价值的行业,价值就体现在有效的推动产品前进,而语言只是实现这个价值的工具。

    推荐阅读