扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1,SpringMVC
十余年的石家庄网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整石家庄建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“石家庄网站设计”,“石家庄网站推广”以来,每个客户项目都认真落实执行。
在中国有一种说法“生姜仍旧又辛辣”,所以虽然SpringMVC已经发布了十多年,但它仍然强大有力,并且处于领先地位,具有绝对优势。在拥抱完整的MVC框架之后,Spring已经发展并且现在是面向Internet的应用程序的综合Java框架,为软件工程师提供了一个功能强大的工具包,用于Web应用程序开发和安全项目的应用程序配置。作为最受欢迎的程序员之一,Spring的完善生态系统提供了许多其他选项:RESTAPI或SOAPWeb服务,安全性(身份验证和授权,加密)等。此外,许多大公司选择使用SpringMVC,因此如果您在使用过程中遇到问题,将会有很多技术专家为您解答。
利弊
春天并非没有理由爬到顶端。它之所以成为最着名的Java框架,主要是因为:
1.使用POJO简化测试数据的注入。
2.增强模块性,使代码更具可读性。
3.不同模块之间的分离。
4.灵活的应用依赖注入(DI)。
虽然SpringMVC有很多文档可供参考,但它的学习曲线对新手Java开发人员来说太苛刻了,而且开发人员可能会遇到这样的情况:当他们遇到较少的引用时无法启动。另外,虽然SpringMVC的在线信息较多,但版本会有所不同。总的来说,SpringMVC是工程师最喜欢的框架之一。
2,Hibernate
虽然Hibemate不在RebelLabs的排行榜上,但它仍然是一个值得一提的Java框架。这种映射Java框架使用连续数据库访问操作而不是高级对象处理来解决对象和关系不匹配的问题。每个企业应用程序都不同,因此Hibernate附带了一个强大的功能集,可以帮助后端开发人员微调数据访问层。这是一个高级ORM框架,允许您对Java对象(实体)执行数据库操作。使用Hibernate Cache将数据从Java环境持久化到数据库是一个持久的概念。
目前Java编程语言最流行的7个框架,你了解多少?
利弊
Hibernate可以通过对原始代码进行微小更改来帮助您与任何数据库进行通信,从而弥合对象和关系之间的差距。除了这个优势,它还有:
1.无论是Oracle,Db2还是MySQL,Hibernate都独立于DB。
2.缓存机制优化了类似的查询。
3.支持N + 1或延迟加载。
尽管Hibernate有许多优点,但它不允许多次插入,不支持对JDBC的某些查询,并且不适用于具有较少表的小规模项目。
3,Struts2
为了更详细地解释现代软件工程师广泛使用的Java框架,Qianfeng Wuhan Java Training的老师介绍了Struts2,它是ApacheStruts1的后续版本。 Struts2用于构建当代JavaEE Web应用程序。 Apache Software Foundation为开发人员提供了广泛的工具,用于创建企业级面向Web的应用程序,优化开发过程,甚至是后期维护,包括最终的优化过程和后期维护。如果您担心像广播门户这样的高负载系统,Struts将是您的最佳选择。
由于Struts2实现了Action类(普通的POJO对象),因此测试编写代码所需的工作量更少。使用框架API,耦合变得更容易,并有助于调整拦截器。
利弊
Struts2的最大特点是您不必重写或实现Action类,IT工程师为多个操作创建重复代码不再是一个问题,因为拦截器将处理它。
Struts的最大缺点是它不够灵活。
目前Java编程语言最流行的7个框架,你了解多少?
瓦亚丁
Vaadin是现代开发人员在创建业务应用程序和使用GWT呈现页面时必须选择的流行框架之一。 Vaadin使用一种众所周知的基于组件的方法来快速适应浏览器的变化,从而减轻开发人员的负担。 Vaadin通过将更改传达给浏览器来消除开发人员的负担。丰富的UI组件,各种各样的小部件和控件,程序员可以随时随地构建一个很酷的应用程序。
利弊
在Java或HTML布局构造中,Vaadin提供了一种将数据绑定到MVC或MVP的方法。支持拖放和其他突出功能简化了Java应用程序的单页UI创建。
因为Vaadin需要将每个事件发送回服务器,或者移动应用程序的UI很慢。
5. JSF
作为JavaEE的一部分,Oracle支持JavaServerFaces。虽然这不是快速Java开发的最佳框架,但很容易开始使用Oracle的大量文档。如果你不离开JavaEE环境,JSF没有外部依赖,但它非常强大,它有一个丰富的库和工具(包括一个易于创建用户界面的工具集),无论你的应用程序有多复杂,它可以支持。
利弊
如上所述,JSF是JavaEE不可或缺的一部分。因此,开发人员可以利用IDE软件套件和业界领先供应商的高级支持。
但事情有两面,JavaServerFaces太大,所以没有web开发经验或不熟练的人可能很难掌握。
6,Grails
这种特殊的Web框架被认为是一种动态工具,可以提高工程师的工作效率。它具有唯一的API实际,合理的默认值和约定的配置示例。与Java的无缝集成使其成为全球许多程序员的最佳选择。 Grails具有许多强大的功能,例如基于Spring的依赖注入和各种插件,同时提供创建现代Web应用程序所需的一切。
目前Java编程语言最流行的7个框架,你了解多少?
利弊
Grails可以快速构建新项目,脚手架为编码人员节省了宝贵的时间。 Grails拥有一个包含900多种易于安装的插件的庞大库。 Grails是一个用于全栈开发的Java框架,它的对象关系映射涵盖了大量的功能,使其成为一个重量级的软件。
7,GoogleWebToolkit
GWT是一个免费的Java框架,允许用户创建和优化复杂的基于Web的应用程序。 GWT的软件开发工具包提供了核心Java API和小部件,可以在构建之后编译到JavaScript应用程序中。
利弊
使用GoogleWebToolkit,您可以获得单个代码库(Java中的浏览器和服务器端编程),从而简化了开发和调试过程。与其他技术的简单集成允许程序员在网页中嵌入GWT小部件。 Widget功能也可以在GWT的帮助下自定义。
但是,GWT不适用于纯HTML和后动态内容布局,因此无法满足网页设计师的需求。
它是程序的一种低级表示,可以运行于Java虚拟机上。将程序抽象成字节码可以保证Java程序在各种设备上的运行
Java号称是一门“一次编译到处运行”的语言,从我们写的java文件到通过编译器编译成java字节码文件(.class文件),这个过程是java编译过程;而我们的java虚拟机执行的就是字节码文件。不论该字节码文件来自何方,由哪种编译器编译,甚至是手写字节码文件,只要符合java虚拟机的规范,那么它就能够执行该字节码文件。
JAVA程序的运行
因为Java具有跨平台特性,为了实现这个特性Java执行在一台虚拟机上,这台虚拟机也就是JVM,Java通过JVM屏蔽了不同平台之间的差异,从而做到一次编译到处执行。JVM位于Java编译器和OS平台之间,Java编译器只需面向JVM,生成JVM能理解的代码,这个代码即字节码,JVM再将字节码翻译成真实机器所能理解的二进制机器码。
字节码是怎么产生的?
我们所编写的程序都是.java格式,通常在执行的时候也许点击一下eclipse的运行键就可以在控制台看到运行结果,但是也可以更酷一些,如果你装了JDK,那就可以直接在以命令行的方式编译运行你的.java文件,编译后会形成.class文件,这个.class文件即字节码。
字节码怎么解读?
上图是编译好的字节码文件,即一堆16进制的字节,如果使用IDE去打开,也许看到的是已经被反编译的我们所熟悉的java代码,但这才是纯正的字节码
这里只介绍字节码由哪些部分组成, 具体的意思自行百度或者看文尾的连接, 有较为详细的讲解
上图即字节码文件的组成部分, Class文件的结构不像XML等描述语言那样松散自由。由于它没有任何分隔符号,
所以,以上数据项无论是顺序还是数量都是被严格限定的。哪个字节代表什么含义,长度是多少,先后顺序如何,都不允许改变, 如上图左侧即每一部分规定的长度
魔数(Magic Number)
魔数是用来区分文件类型的一种标志,一般都是用文件的前几个字节来表示。
比如0XCAFE BABE表示的是class文件,那么有人会问,文件类型可以通过文件名后缀来判断啊?是的,但是文件名是可以修改的(包括后缀),那么为了保证文件的安全性,将文件类型写在文件内部来保证不被篡改。
至于为什么是CAFE BABE估计大家也能猜到, 程序员与咖啡的不解之缘
版本号(Version)
版本号含主版本号和次版本号,都是各占2个字节。在此Demo种为0X0000 0033。其中前面的0000是次版本号,后面的0033是主版本号。通过进制转换得到的是次版本号为0,主版本号为51。高版本的JDK能向下兼容以前版本的Class文件,但不能运行以后版本的Class文件,即使文件格式未发生任何变化. 这就是target参数的用处,可以在使用JDK 1.7编译时指定-target 1.5
常量池(Constant Pool)
常量池是Class文件中的资源仓库, 量池中主要存储2大类常量:字面量和符号引用。字面量如文本字符串,java中声明为final的常量值等等,而符号引用如类和接口的全局限定名,字段的名称和描述符,方法的名称和描述符。常量池是一个表结构,在表的内容前有一个类型的计数器,表示常量池的长度
上面的表中描述了11中数据类型的结构,其实在jdk1.7之后又增加了3种(CONSTANT_MethodHandle_info,CONSTANT_MethodType_info以及CONSTANT_InvokeDynamic_info)。这样算起来一共是14种
访问标志(Access_Flag)
访问标志信息包括该Class文件是类还是接口,是否被定义成public,是否是abstract,如果是类,是否被声明成final。通过上面的源代码,我们知道该文件是类并且是public。
0x 00 21:是0×0020和0×0001的并集。其中0×0020这个标志值涉及到字节码指令
类索引(This Class Name)
类索引用于确定类的全限定名
0×00 03 表示引用第3个常量,同时第3个常量引用第19个常量,查找得”com/demo/Demo”。#3.#19
父类索引(Super Class Name)
0×00 04 同理:#4.#20(java/lang/Object)
接口索引(Interfaces)
通过上边字节码图可以看到,这个接口有2+n个字节,前两个字节表示的是接口数量,后面跟着就是接口的表。我们这个类没有任何接口,所以应该是0000。果不其然,查找字节码文件得到的就是0000。
字段表集合(fields)
字段表用于描述类和接口中声明的变量。这里的字段包含了类级别变量以及实例变量,但是不包括方法内部声明的局部变量。接下来就是2+n个字段属性。我们只有一个属性a,所以应该是0001。查找文件果不其然是0001。
该区域含有字段的访问标志, 访问权限, 字段的名称索引, 字段的描述符索引, 属性表
描述符的作用就是用来描述字段的数据类型、方法的参数列表和返回值。而属性表就是为字段表和方法表提供额外信息的表结构。对于字段来说,此处如果将字段声明为一个static final msg = "aaa"的常量,则字段后就会跟着一个属性表,其中存在一项名为ConstantValue,指向常量池中的一个常量,值为的"aaa"。
方法(methods)
包含访问标志表, 方法名索引 , 方法描述符索引, 属性表数量,等
Attribute
0×0001 :同样的,表示有1个Attributes了。
0x000f : #15(“SourceFile”)
0×0000 0002 attribute_length=2
0×0010 : sourcefile_index = #16(“Demo.java”)
SourceFile属性用来记录生成该Class文件的源码文件名称。
你如果用elipse编译,先输入syso,然后alt+/(快捷键),就会自动补全语句,然后在双引号中打上“很酷”就行
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流