从语言设计的角度看是可以的,重新设计一下编译器就能实现,但从工程实践的角度看是不可行的。
其一,Java语言最大的特点就是跨平台可移植,一次开发,一次编译,多平台执行,这一特性就是靠JVM(Java虚拟机)实现的,如果改写编译器像C语言一样直接编译成了可执行程序,就失去了跨平台特性。
其二,Java语言设计之初就设计成为了一款严重依赖JRE(Java运行时环境)的语言,有部分语言设计上的缺陷必须依赖JVM来解决,比如GC(垃圾回收),我们知道,Java语言是没有内存回收能力的,因此还得靠JVM,在工程实践中,如果软件不能进行内存回收,后果将是灾难性的。
其三,Java语言是面向对象的,区别于同是面向对象的C++,Java还有一个动态特性。
它允许程序动态地装入运行过程中所需要的类,这是C++语言进行面向对象程序设计所无法实现的。在C++程序设计过程中,每当在类中增加一个实例变量或一种成员函数后,引用该类的所有子类都必须重新编译,否则将导致程序崩溃。Java从如下几方面采取措来解决这个问题。Java编译器不是将对实例变量和成员函数的引用编译为数值引用,而是将符号引用信息在字节码中保存下传递给解释器,再由解释器在完成动态连接类后,将符号引用信息转换为数值偏移量。这样,一个在存储器生成的对象不在编译过程中决定,而是延迟到运行时由解释器确定的。这样,对类中的变量和方法进行更新时就不至于影响现存的代码。解释执行字节码时,这种符号信息的查找和转换过程仅在一个新的名字出现时才进行一次,随后代码便可以全速执行。在运行时确定引用的好处是可以使用已被更新的类,而不必担心会影响原有的代码。如果程序连接了网络中另一系统中的某一类,该类的所有者也可以自由地对该类进行更新,而不会使任何引用该类的程序崩溃。而这一切同样依赖JRE。
以上几点决定了Java不能像C语言一样直接编译成机器码,当然,还有一些其它因素,但我认为上面几点是最主要的。
java应该学习什么?
就好比色彩有三原色的说法,那么属于java的三原色是哪些构成呢?
Java世界第一编程语言,至今风靡全球21年。人们的日常生活和工作,因为Java的存在变得井然有序。一般的Java培训课程都是从Java基础开始,每个阶段配以对应的项目进行实战。分享一份课程大纲,一起看看吧!
第一阶段 Java基础
JavaEE的学习内容(Java面向对象,常用基础类,线程I/O,异常处理等)
从计算机基本概念,DOS命令开始,为你入门编程语言扫盲,什么是程序,如何配置JAVA开发环境,JAVA编程的过程是怎样的,JAVA有什么物特点,程序是如何运行的,这些你都可以在这里得到答案。接下来是介绍JAVA编程的基础语法,共分为10个知识点,我们将学习变量,基本数据类型,进制,转义字符,运算符,分支语句和循环语句等,以达到训练基础语法和逻辑能力的目的。还有对数组、面向对象和异常处理等。
第二阶段 javaWeb的学习
javaWeb(HTML5,CSS3,javascript,jQuery,JDBC连接池,servlet等)
Web前端开发基础和框架、Servlet和JSP在Web后端的应用、Web后端开发相关专题、MVC和分层架构以及项目开发流程及CASE工具的使用等。
第三阶段 java框架
Java框架(Struts2,Hibernate5,JPA,Spring4,BootStrap,svn & git & Jenkins持续集成等)
框架是程序中另一种存储数据的方式,比直接使用数组来存储更加的灵活,在项目中应用十分广泛。同时,框架整合开发(SSH/SSS)、RESTful架构和移动端接口设计、第三方接口和在线支付功能、网站安全和Spring Security应用实战、复杂用户交互处理和Spring Web Flow的应用、MyBatis的应用和SSM整合,我们将深入研究其中涉及到的数据结构和算法,对学员的技术深度有了一个质的提升。
第四阶段 java+云数据
亿级并发架构演进、Linux基础、搭建tomcat环境以及大数据开发云计算等高级Java教程,是Java技术的高端知识。其中穿插项目实战演练,企业真实项目供学员应用学习,进行知识体系的“二次学习”。
上述就是Java培训班要学的内容。想学好Java,最好选择全程面授模式的,讲师全天陪伴,学的更全面,提升更快,学习效果更好。