• 开发必会系列:J2EE是什么


    为什么Java是跨平台的?
    高级语言通过编译器,转为汇编语言,汇编语言通过汇编器转为0和1。
    当c转为汇编时,不同厂家cpu,用不同的指令集,所以有不同的汇编语言结果,导致c不能跨平台。
    java在各平台装java虚拟机,就相当于做了个格式转换,也体现了分层的概念,docker也是这样。所以java代码,扔给不同平台,经过jdk一转化,那个平台就能看懂了。
    所以,java是跨平台的。
     
    为什么c和c++没有被java替换呢?
    原因很多,比如,垃圾回收问题,正如周正明书里提到: java和c++之间有一堵由动态内存分配和垃圾收集技术所围成的'高墙',墙外的人想进去,墙内的人想出来。c++与java各有千秋
     
    C语言编译完了就直接是硬件能够识别的二进制,不像java,需要jvm才能运行。
    C语言不用自举,除了第一个开发C语言的,需要用汇编来做,后面都可以用锤子造锤子。
     
    Java源程序(.java)要先编译成与平台无关的字节码文件(.class),然后字节码文件再解释成机器码运行。(解释是通过Java虚拟机来执行的)
     

    1、在最早的 java发布时,执行引擎原理:解析 字节码指令,转换为调用对应的 c语言函数实现。例如: if(opcode等于xx001) { add(a,b); } , xx001是字节码指令,add(a,b) 是c语言实现的函数。

    2、后来由于直接翻译为c语言再去执行效率太低,为了提高执行效率,干脆直接将字节码指令翻译为机器码(不经过c了),然后将pc寄存器指向那块临时生成的机器码内存区域起始地址,交给cpu执行 ,在c语言里使用函数指针可以实现这个目标(在c语言里可以实现直接执行汇编代码或者机器码)。

    3、再后来出现优化热点代码的技术,比如 for 循环 这种场景,我干脆把第一次for循环里面的指令生成的机器码缓存起来,重复利用,不用每次分配内存生成重复机器码,回收内存了。

    JDK、JRE、JVM三者间的关系
     
    什么是javaEE?
    java发明之后,经历了一系列的升级和改名,如今有javaME(硬件用)、javaSE(标准版)、javaEE(企业版)。企业版比标准版多了些类,如 EJB、servlet等。
    工作中,java做企业级开发多,所以只关注javaEE就行。如今javaEE最新版本为8(目前2018年),而javaSE已经到了11。
     
    1、JavaEE它有13个核心技术, JDBCJNDIEJB、RMI、ServletJSP、XML、JMS、Java IDL、JTS、JTA、JavaMail和JAF。
    JavaEE 拥有广泛市场的原因之一就是可以使用多种框架来使开发变得简单。 目前比较常见的框架组合 SSHSSM。如今又有了springboot cloud分布式。
    所以像EJB3.0虽然曾是javaEE5作为企业级应用的核心功能,但却没什么人用。反而现在的很多框架的基础都是servlet、JSP。参考文章:什么是JavaEE
     
    2、企业级架构,都是从单机走向分布式的。分布式的发展,到目前为止一共经历了四个阶段(目前2018年),EJB位于第二阶段(EJB到底是什么EJB怎么用),第三阶段出现了webservice和rest,第四阶段是dubbo。发展历史一言蔽之,就是数据传输(Java对象调用),从最开始的序列化,中间变成了文档,现在又变回序列化,详情参考。而未来,将会是以微服务为主的第五阶段。
     
    JavaEE——web框架发展史
    1、Servlet的出现
    2、Jsp的出现
    3、倡导了MVC思想的Servlet版本1.2出现——JSP+Servlet+JavaBean
    4、框架阶段4.1、Struts的出现
        Spring的出现
        SpringMVC的出现
     
  • 相关阅读:
    FreeIPA部署及基本使用
    第7天:Django模板使用与表单
    第6天:数据库配置与模型
    第5天:基于类的视图与中间件
    linux下修改MySQL表名与表的字符编码
    webService理解(一)
    查询MySQL库下所有表名,数据为空的表名
    linux中MySQL连接找不到mysql.sock文件
    初步书写Webservice项目,运行后报错:Cannot assign requested address: bind
    linux配置jdk,MySQL环境
  • 原文地址:https://www.cnblogs.com/zhaot1993/p/13053048.html
Copyright © 2020-2023  润新知