1.静态编译和动态编译
静态编译是程序在编译时就已经确定好了所有类之间的关系,要运行程序所有类
都缺一不可,若在开始运行时就把其中的某类文件丢失,就会产生
NoClassDefFoundError错误,程序会终止,在程序运行前的装载期间就把要用到
的类加入到内存当中,它的特征是new关键字 再加上类构造器,这个类构造器的
命名在程序编译后就不可更改了
动态编译则是编译时并不确定好所在类的关系,在我们实例化类之前都没有装载
到内存中,在程序运行时动态决定要加载的类,再对它实例化,若在此时类文件
丢失,产生的是ClassNotFoundException异常,程序以后还可以继续运行,代码
特征是Class.forName(pathName).newInstance(),而此处的pathName可以是变量
,但它产生的对象却是Object类型的,需要我们自己强制转换,而且使用的构造
器的类的无参构造器。
动态编译体现了代码的健壮性和可扩展性,可以和接口很好得结合在一起,实例
化的那段代码可以重复利用,在大型项目中若有新类出现,是不可能每次都要把
程序或都服务停掉来重新编译,那样做的代价会很大;如果使用动态编译,要以
前有的和要更新的类文件名配置到一个配置文件里,让程序读取,就可以让项目
动态地更新了。
2.java和javascript的区别
(1).java是一种真正的面向对象的语言,javascripty是脚本语言,一种基于对象和驱
动的编程语言。
(2)js是直接嵌入到hmtl文档中.
(3)java声明变量有很多种,采用静态联编,js就用var,采用弱类型检查,动态联编,在
运行时检查其数据类型,也就是在脚本间可改变类型。
(4)java要执行先编译再用jvm解释执行,js直接在浏览器中解释执行,是真正的动态
解释语言.