java技术人员(精选9篇)
1、最开始三个月,开始接触Java,比如接口、继承、封装等,买了本《Think in Java》天天啃,并且同时做项目实践。猛学了三个月后,对面向对象编程OOP熟悉了,原来脚本式思维和对象思维确实有差别。
2、三个月后,开始啃《Core Java》,《Effective Java》,对Java有了更深入的了解,回调的概念也有了,逐渐接触到更高的层次,面向对象设计OOD,这时又看了一本书《Head First Design Patterns》,感觉设计模式特别有趣。再写代码,已经不是面向实现编程,而是面向设计编程。感觉写Java代码太简单了。
因为每天还有Java的Web项目开发,逐渐了解了WebWork等Web框架的使用。
3、六个月过去了,Java瘾越来越大,逐渐开始往更高层次攀登,这时,又看到两本书《企业应用架构模式》、《UML和模式应用:面向对象分析与设计导论》,已经开始从设计往面向对象分析OOA、架构攀登了。
因为大半年的Java企业开发,Hibernate已经比较熟悉了,了解Hibernate背后的持久化技术、Spring背后的IoC容器、组装技术原理。
4、一年后,他逐渐脱离了Java语言,开始看这类书《面向模式的软件体系结构 卷1》。这个阶段持续了一年,并且对以前的学过的设计模式,如命令模式、观察家模式有一个更深入的了解。
因为两年的企业应用开发,他已经熟悉了Java EE的十来种规范,对Web容器和Servlet规范的关系有很深的理解,对JDBC规范和数据库驱动程序的关系也很了解。
他正在经历Java开发的快速上升期,对应于曲线的一年时间点。
5、两年后,他突然发现,他学的很多东西都没用,都是纸上谈兵,比如,在自己的企业应用开发中,Command模式、Template从来没有用过。
他还发现,本来100行写的一个功能,花了1000行,就是为了所谓的设计优雅性:可扩展。而实际上,还没有等到扩展,该系统就已经废掉了。
他发现原来设计模式主要用在系统框架开发,而不是应用开发,一般开发人员不用,只需要理解。
他还发现,他认真学过的JMS、JCA、JTA、EJB像是从来没有用过。突然他想通了,JMS、JTA可能是一种无奈的选择:处理遗留系统。
当他开始对自己两年学到的知识进行反省、批驳时,他已经有了技术辨别能力,知道技术推广也不是那么纯洁,也有商业炒作。
知道Java虽然是Sun公司发明的,但Sun公司没有赚到钱,IBM却赚得盆满钵满,最后Sun公司竟然卖给了技术商人Ellison所创立的Oracle了,Java之父James Gosling也混得并不好,从Sun公司到Oracle,最后还不欢离开了。
这时候,他已经不限于Java了,开始了解C#,Ruby,发现Java可能并不太适合互联网开
发,PHP可能更适合,ROR开发更快但需要在牛人的手里。两年后的这个时候,他才开始真正驾驭Java,他已经不再限于Java,而是企业应用。
这个时候,技术提升的速度越来越慢了(曲线的三年分界点),因为不知道还可以学习什么新技术。因为他发现,原来这些东西,最深层次的,都是几十年前的技术概念:消息系统、异步通讯、事件机制等等....6、三年过去后,他已经不再限于企业应用,而是解决方案,技术只是一种解决问题的方式,比如企业信息化成功的关键,恐怕不是技术,而是企业本身的业务流程成熟度;企业信息化成功的关键,不是处理好了技术,而是处理好了几位企业高官的利益。
这时候,对IT行业新闻,逐渐有判断力和免疫力。
他突然发现,技术的力量很有限,商业才是最大的驱动力量。而此时,他已经不再钻研技术细节,比如JVM的垃圾回收机制,如果他在一个技术研发型公司,比如普元,可能还会深入挖掘技术。如果他在东软这类行业应用开发企业,这类企业的口号是Beyond Technology,这时候他再执迷于技术而轻业务,恐怕不太受欢迎。
一、Java技术的概述
Java平台由Java虚拟机 (Java Virtual Machine) 和Java应用编程接口 (Application Programming Interface、简称API) 构成。Java应用编程接口为Java应用提供了一个独立于操作系统的标准接口, 可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后, Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次, 就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.4, 最近版本为Java1.7。
Java分为三个体系Java SE (Java2 Platform Standard Edition, java平台标准版) , Java EE (Java 2 Platform, Enterprise Edition, java平台企业版) , Java ME (Java 2 Platform Micro Edition, java平台微型版) 。
二、Java多线程创建
利用Java语言实现多线程应用程序的方法很简单。根据多线程应用程序继承或实现对象的不同可以采用两种方式:一种是应用程序的并发运行对象直接继承Java的线程类Threadt另外一种方式是定义并发执行对象实现Runnable接口。
通过继承Thread类创建线程。Thread类是JDK中定义的用于控制线程对象的类, 在该类中封装用于进行线程控制的方法。在这个途径中, 用户程序需要创建自己的Thread类的予类, 并在子类中重新定义自己的方法, 这个方法中包含了用户线程的操作。这样在用户程序需要建立自己的线程时, 只需要创建一个已定义好的Thread子类的实例就可以了。
通过Runnable接口创建线程。Runnable接口只有一个方法run () , 实现这个接口, 就必须要定义mn O方法的具体内容, 用户新建线程的操作也由这个方法来决定。定义好run () 方法之后, 当用户程序需要建立新线程时, 只要以这个实现了run () 方法的类为参数创建系统类Thread的对象, 就可以把用户实现的run () 方法继承过来。
三、Java在Intranet应用
Intranet是一种与外部世界安全隔离的内部网络, 它采用了Internet技术为它的信息底层服务。创建一个成功的Intranet应用程序应遵循以下四个步骤: (1) 确定需求。通过考察Intranet网的目的、范围、用户等因素来确定Intranet网设计和实现需求; (2) 规划。在确定了Intranet网的需求后, 则开始进行Intranet网的规划, 确定项目实施的时间和实施项目所必需的步骤, 对条件和需求进行实现性考查; (3) 设计。一般是通过确定Intranet网上软件硬件安装的位置与方式 (如主Web服务器安装的位置以及软件如何共享等) 来设计的; (4) 实现。在Intranet将根据需求、计划和设计来创建Intranet服务和开发应用程序。
四、Java在仿真系统中应用
控制类是一个抽象类, 是控制线程和对象的类, 其中线程控制是本文要重点说明的。在Java开发语言中, 除系统线程外的每个线程又隶属于另一个线程组, 可以在创建线程组时指定其隶属的线程组, 若没有指定, 则缺省的隶属于系统线程组。这样, 所有线程组组成了一棵以系统线程组为根的树。在基于Java的多线程仿真机制中, Java提供了线程组类, 线程组提供了控制、管理线程的所有方法, 为仿真模型中线程的管理提供了基础设施, 极大地方便了开发人员。
Java允许我们对一个线程组中所有的线程同时进行操作, 比如我们可以通过调用线程组的方法来设置其中所有线程的优先级, 也可以启动或阻塞其中的所有线程。例如, 运行模型时, 将产生的线程加入到其线程组中, 在主线程中, 仿真钟每推进一步, 就查看线程组中线程的启动时间, 如果有等于当前仿真时间的, 就启动, 使模型得到很好的控制。
结束语由于Java的跨平台性, 更为分布式的物流仿真提供了广阔的发展空问, 采用多线程机制不但能模拟并行的系统, 还能在系统中实现交互。如果在软件的设计中采用UML面向对象建模技术, 可使程序开发过程标准化、可视化, 代码编程也简单化。
参考文献
[1]詹跃东, 李莉, 史扬:基于UML和多线程的AGVS仿真工具设计[J], 系统仿真学报, 2005 (5) :871—874
[2]接鹏;基于Java的多线程离散事件仿真机制[J], 现代计算机, 2005 (5) :84—85
[3]叶俊民, 汪望珠:面向对象软件工程使用UML、模式、Java (第2版) [M], 北京:清华大学出版社, 2006
[4]白尚旺, 党伟超:Power Designer软件工程技术[M], 北京:电子工业出版社, 2005
关键词:混淆技术;Java;编程;算法
中图分类号:TP312 文献标识码:A 文章编号:1674-7712 (2012) 18-0038-01
一、前言
Java作为一种新一代的编程语言,其因编程简单、跨平台性可操作性强被许多的开发人员和公司喜爱,而且如今已经成为应用程序的主流开发软件。然而,Java编译器在编译时是将代码引用到的变量和方法符号保留在字节码文件中,并且这些符号都有语义信息,因此使得开发的程序很容易被反编译,导致软件被破解。最终将使得开发者的知识产权受到侵害。为了保护开发者的权益,代码混淆技术变应运而生。
二、混淆技术的发展
早在1997年Collberg便开始了对代码混淆的研究,在他发表的文章中提出了代码混淆变换的各种类型,他将其分为四类:代码外形混淆、控制命令混淆、内部数据混淆以及预防混淆。随后Kelly等人构造了一种用来实现构造代码的混淆算法机制。在国内,近些年了也有一些学者逐渐意识到了代码混淆技术在进行程序编写中的重要性,大量研究之后取得了较大的成果。比较有代表的有李永祥的多分语句控制迷惑技术,李长春的执行重整混淆算法等。由于混淆技术具有非常重要的软件保护作用,相信未来肯定会有更多的人和组织加入到代码混淆技术的相关研究课题中来。
三、混淆技术介绍
(一)混淆变换原理
作为一种非常实用的软件保护策略,代码混淆技术的基本思想是将应用程序在保持语句含义不变的前提下实现P到P’的变换。此变换中必须满足条件:P‘和P具有相同的运行结果;若P‘出错终止或终止失败,P也必须出错地终止或终止失败;P‘产生与P一样的输出。两个程序唯一不同的只是P‘比P更难去进行反编译,并且P‘可读性差以及相关工具难以解析。因此经过这种变换可以到达混淆的目的,使软件不易被攻击。
(二)混淆的应用领域
代码混淆的应用范围很广,归纳起来主要有一下几种领域:⑴分布式计算和软件保护;⑵法保护和DRM;⑶同形加密;
(三)混淆的分类
代码混淆技术根据混淆对象的不同可以分为四种:代码外形混淆、控制命令混淆、内部数据混淆和预防混淆。
1.代码外形混淆。Java混淆器使用到的混淆方法中代码外形混淆最为典型,该算法可以将Java所有源代码中包含的类的功能隐藏。如果最初的格式信息被除去后代码将不能恢复,因此称这种混淆为单向变换。程序经过这种变换后时间和空间复杂度不会受影响,因为它并没有额外执行代价。
代码外形混淆主要使用的技术有删除(删除程序和中的注释、调试信息、未被调用的方法和類等)和改名(程序中的变量名、常量名、类名、方法名等)。此变换可以使程序的理解变难。
2.控制命令混淆。控制命令混淆能增加程序的复杂度和程序的反编译时间,它是通过改变程序的判断条件或添加可控判断条件以及对程序的结构和流程进行调整来实现的。常常用到的控制命令混淆主要有排序、聚集和计算变换。
3.内部数据混淆。内部数据混淆技术将会利用数据流中的难点问题,向程序中引入使程序精度降低或难度增加的因素,进而可以影响反编译器对程序的分析结果。内部数据混淆只会变换代码中的数据结构,而不修改软件代码。
进行内部数据混淆的主要方法有四种:变量分裂与变量合并、数据结构变换、静态数据动态生成、类继承转换。
4.预防变换。预防变换是利用某些专用反汇编工具的弱点而设计的。具体混淆可以分为针对特定目标实施的预防变换或者是依据已知的反编译算法实现的混淆。
5.四种混淆技术的分析和比较。代码外形混淆使攻击者解读程序造成不便,同时也能针对反编译工具的算法使之反编译难以实施。内部数据混淆改变逻辑变量。控制命令混淆使程序变得更加复杂从而增强程序的抵抗性能。预防混淆较多时候都是具有一定的针对性。内部数据混淆和控制混淆都会在增加程序复杂度的同时造成程序执行效率的下降,而代码外形混淆则不会影响执行效率。
四、标示符重命名混淆算法
标示符重命名混淆属于代码外形混淆的范畴。它是将字节码文件中的一些类名、接口名、方法名等替换为其他无意义的名字。这并没有造成程序的额外开销,抗攻击能力也不强。
重命名是因为进行内部数据混淆和控制混淆时都会增加程序的开销,而这并不是我们想要的。有时候我们经常需要一种可以抵抗攻击并且不会造成程序执行效率下降的算法,而重命名混淆正是这样的。当一些名字被毫无意义的字符替换后,攻击者很难从中读出该名字所代表的意义,这便使得攻击者在反编译是造成了困难。
当程序中一个实体被重命名后,所有与其相关的内容必须更新,否则会引起运行出错。但是有一些是不能被重命名的。这便有了代码混淆范围的提出。以下三种标示符是不在范围内的:(1)子类中一个超类或接口中抽象方法的实体方法;(2)超类中继承方法的重写;(3)特殊属性明确规定不可进行替换。
标示符重名算法可以分为四种:静态方法重写、替换非法提示符、无关联方法重载、部分标识符滥用。
五、算法分析
衡量一个混淆算法性能好坏的重要指标是对程序执行开销的影响。内部数据混淆和控制命令混淆都增加了程序的二外执行开销从而影响了程序的运行效率。重命名混淆只是将名字替换,很多时候都会将名字缩短,使文件变得更小,不会造成执行效率的下降,同时也使攻击者将花费更长的时间来理解和反编译程序。
六、总结
代码混淆技术是时下最常用的,同时也是最有效的保护Java软件的方法,新型的混淆算法一定会随着技术的发展而被发现。虽然代码混淆技术在一定程度上保护了软件的安全以及开发者的权益,但只有我们杜绝使用盗版软件同时不去侵犯他人的知识产权才能切实的保护好开发者的权益。
参考文献:
[1]魏会生.基于JAVA类文件保护的探讨[J].工会博览·理论研究,2011,3:25-26.
[2]魏衍君,王应战.Java语言混淆器模型研究[J].科技信息,2012,4:61-62.
成都java技术培训机构哪家好?转行Java程序员应该具备哪些知识
成都国信安java培训由副教学总监,优秀讲师带队并亲自授课,秉承成都国信安一贯的专业品质态度,在课程质量,学生素质,就业服务上相当严格要求,并以学业满意就业为目标,打造国内优秀java培训班,感兴趣的同学不妨关注国信安教育基地了解一下吧。
为什么越来越多的90后偏爱互联网行业呢?他们的择业观与80后有哪些区别呢?
在公司内部,90后更偏爱自由开放的企业文化。从调查结果来看,有73%的受访者赞同“开放自由、相对宽松”是最理想的企业文化,仅有13%的受访者可以接受“严格守序、集体高于个人的传统企业文化”。在追求自由的风格影响下,大部分90后都明确表示反感办公室八卦和职场潜规则。
每一代人都有自己的择业观——70后追求稳定“铁饭碗”;80后奉行实用主义,看重职业发展;而90后爱高薪更爱自由。波士顿咨询公司的最新分析报告显示,2014年互联网行业在中国直接创造了170万个就业机会。随着行业的进一步发展,预计2020年有望直接为约350万人带来就业机会。短短几年间,蓬勃发展的互联网公司已经成为深受90后青睐的就业选择。很多90后之所以热衷在互联网企业就业,与行业广阔的发展空间、人性化的管理风格以及诱人的薪酬福利有着密切关系。
四川是旅游的天堂,无法拒绝她火辣辣的美食,无法拒绝她惊艳的自然风光,更无法拒绝她的古蜀文化。初中毕业学啥技术好?相信这是2017年中考过后大多数成绩不理想同学们思考的问题。的确,2017初中毕业没考上高中怎么办?在家啃老还是外出打工?年纪那么小,未来又该何去何从呢?>事实证明,绝大多数成绩一般的初中毕业生头脑相当聪明,他们只是不适应当前应试教育的题海战术,与其强迫他们继续死读书,不如转换思路,选择成功捷径——学技术。职业院校相比普通高中,可以提早选择实用专业,进入职业岗位,从而实现人生价值。
一说起IT培训,很多人都表示苦不堪言,总有人被虚假信息坑过。很多人表示自己对其一窍不通,实在不知道怎么办才好。别着急,让小编为你奉上这些必备小技巧,带你快速简单的上手。接下来小编为你整理了超实用的干货~想了解IT培训的,快来看,绝对超实用哦!国信安教育基地
近年来我国信息化发展越来越快,使得全国各地的信息化建设如火如荼,出现了大量的信息化人才尤其是Java软件人才的缺口,而我国信息化人才培养还处于发展阶段,导致社会实际需求人才基数远远大于信息化人才的培养基数,使得数以万计的中小企业急需全面系统掌握Java软件开发基础技能与知识的软件工程师。
同时,Java工程师的薪水相对较高.通常来说,具有3~5年开发经验的工程师,拥有年薪10万元是很正常的一个薪酬水平.但是,对Java人才需求旺盛的IT企业却很难招聘到合格的Java人员.其中,根本的原因就是许多计算机专业的毕业生在读期间没有掌握实用的技能与经验,距离企业的实际用人需求有较大的差距.因此,计算机专业的大学生欲成为Java工程师,便捷的一条路就是参加以实战项目为主要教学方法的Java职业技能培训,从而有效地缩短同企业具体用人需求之间的差距.那么想要成为一名优秀的Java程序员自身应该具备哪些知识。面向对象的知识:
Java是一个面向对象的开发语言,因此熟悉面向对象对学习Java很有必要,您要了解:什么是对象,什么是类;什么是封装,什么是多态,什么是继承;什么是抽象类,什么是接口。了解了概念后,您还需要这些概念是如何体现的,如类和对象有什么区别?类是如何封装的? Java语法:
如果您有C++等面向对象语言的开发经验,您只需简单的翻看一下介绍Java的相关书籍就可以了。如果您是新手,没有关系,您下些工夫,好好研究一本Java初级教程之类的书就可以了。国信安教育基地
JSP和HTML:
做Java程序员都少不了和JSP以及HTML打交道。因此,想成为Java程序员就不可避免的要熟悉JSP和HTML,您最好能知道JSP的几个内置对象,如Session,Request,Reponse,以及常用的JSP标签,如include,userBean等。如果您再熟悉一下JS和CSS就更好了,那会使您制作的页面更友好。WebServer:
熟悉了以上三种,可以肯定的说您已经可以制作出来JSP页面了,您也可以在您的页面里使用自己开发的了,但您的页面总要跑起来才能看到您要的效果,这就要求您必须熟悉一种WebServer,比如:TOMCAT,RESIN等。您要熟悉如何发布您的应用,如何利用WebServer的数据库资源等。开发工具:
大家都知道,开发工具可以帮助您更好更快地开发,因此熟悉几种开发工具很有必要。目前Java的开发工具比较流行的有JBuilder,IDEA,Eclipse,HTML的开发工具有Dreamweaver等。熟悉一种框架:
熟悉一种框架其实是成为Java程序员的一种可选知识,但目前开发B/S结构的应用的开发小组,都差不多会采用一种框架来构建自己的应用系统。框架都会有许多可重用的代码,良好的层次关系和业务控制逻辑,基于框架的开发使你可以省出很多的开发成本。目前比较流行的框架有Struts和Spring等。成都国信安Java培训班由10年以上软件项目开发经验的资深软件工程师、项目经理以及数据库管理经验的资深专家担任授课,讲课风趣有味,知识面面俱到,通过4个月的课程学习,可以全方位的掌握开发Java大型软件项目过程中所需要的软件技术、设计规范、开发流程、质量控制及项目管理,以及Oracle数据库相关知识内容。
a)开发环境要求:
开发语言:JAVA
JDK版本:1.6
开发工具:Eclipse
数据库:MySQL
上机时间:第17周(从第16周按要求开始准备)b)报告提纲
需求分析:以用例和用例图方式描述需求
系统总体设计:分别画出系统的模块图、类图、顺序图和状态图。
详细设计:以程序流程图或伪代码,写出关键方法的实现。 实现:对系统关键功能的实现过程,用代码+文字形式进行描述。
测试:系统的测试情况
体会:课程学习和项目实现过程的感受、体会或反思。c)考核时间:6月21日
2、考核要求
学生演示系统,老师现场提问,根据回答情况和报告情况,给出最终成绩。
考核点:
独立解决问题的能力;
系统设计、实现情况;
代码的规范性、可读性;
3、作业
1)学生成绩管理系统(数据库版)
功能要求:
学生基本信息管理:实现学生的学号(唯一)、姓名、性别、出生年月、班级等内容的增、删、改、查。要求在查询时,可按照学生的学号、姓名、年龄段、班级进行组合模糊查询。增加和修改时,需要考虑验证学号的唯一性。
课程信息管理:实现课程的信息,包括课程编号(唯一)、课程名称、课程描述、先修课程(每门课只有1门先修课程)、学分等信息进行增、删、改、查。
班级选课信息管理:实现班级选课功能,每个班级可选一门或多门课程
学生成绩管理:实现学生成绩的录入、修改和查询。在录入成绩时,先选择班级、课程名称,然后进行录入。在录入过程时,用户可分批多次录入成绩,也可随时点击“保存”按钮保存信息。查询时可按照班级+课程名称查询,对查询结果以学号排序,并以列表方式显示。也可按照学生学号或姓名查询某个学生的所有课程成绩。
使用Swing图形界面
找工作要面试,有面试就有对付面试的办法。以下是晋商贷小编为您盘点的30个Java程序员面试可能遭遇的技术陷阱
第一,谈谈final, finally, finalize的区别。最常被问到。
第二,Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
第三,Static Nested Class和Inner Class的不同,说得越多越好(面试题有的很笼统)。第四,&和&&的区别。这个问得很少。
第五,HashMap和Hashtable的区别。常问。
第六,Collection和Collections的区别。你千万别说一个是单数一个是复数。第七,什么时候用assert。API级的技术人员有可能会问这个。第八,GC是什么?为什么要有GC? 基础。
第九,String s = new String(xyz);创建了几个String Object? 第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 第十一,short s1 = 1;s1 = s1 + 1;有什么错? short s1 = 1;s1 += 1;有什么错?
面试题都是很变态的,要做好受虐的准备。第十二,sleep()和wait()有什么区别? 搞线程的最爱。
第十三,Java有没有goto?
很十三的问题,如果哪个面试的问到这个问题,我劝你还是别进这家公司。
第十四,数组有没有length()这个方法? String有没有length()这个方法? 第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 常问。
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?
第十七,给我一个你最常见到的runtime exception。如果你这个答不出来,面试的人会认为你没有实际编程经验。第十八,error和exception有什么区别?
第十九,List, Set, Map是否继承自Collection接口? 第二十,abstract class和interface有什么区别? 常问。
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
第二十二,接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)? 第二十三,启动一个线程是用run()还是start()? 第二十四,构造器Constructor是否可被override? 第二十五,是否可以继承String类?
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
第二十八,编程题:用最有效率的方法算出2乘以8等於几? 有C背景的程序员特别喜欢问这种问题。
第二十九,两个对象值相同(x.equals(y)== true),但却可有不同的hash code,这句话对不对?
1 Java的跨平台原理
Java语言的一个非常重要的特点就是与平台的无关性, 而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同平台上运行, 至少需要编译成不同的目标代码;而引入Java语言虚拟机后, Java语言在不同平台上运行不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息, 使得Java语言编译程序只需生成能够在Java虚拟机上运行的目标代码 (字节码) , 就可以在多种平台上不加修改的运行。Java虚拟机在执行字节码时, 把字节码解释成具体平台上的机器指令执行。如Java虚拟机所有Java类型检查都是在编译时完成, 原始数据类型数据在Java执行时不需要用硬件标记。操作这些原始数据类型数据的字节码本身就已经指出了操作数的数据类型, 例如:iaddladdfadd和dadd指令都是把两个数相加, 其操作数类型分别是int、long、fl oat和double。从Java虚拟机支持的数据类型可以看出, Java对数据类型的内部格式进行了严格规定, 这样使得各种Java虚拟机的实现对数据的解释是相同的, 从而保证了Java的平台无关性。
2 Java业务的关键技术
2.1 Java Applet编程技术
Applet是一种特殊的Java程序, 运行于客户端。所有的小应用程序都是Applet类的子类, 因此所有的小应用程序都必须引用java applet类库。小应用程序的执行用一种完全不同的机制启动和控制。由事件驱动, 用户可以按照自己的喜好与基交互。小应用程序经过编译后, 被包含在一个HTML文件中, 并使用Applet标记时, 小应用程序就能被执行。观察和测试小应用程序, 要在Java源程序代码的头部加入一个包含Applet标记的注释, 代码就能用小应用程序所需的HTML语言记述, 只要启动小应用程序阅读器并指定Java源代码文件为目标文件, 就可测试。
2.2 AWT技术
AWT (Abstract Window Toolkit, 抽象窗口工具包) 包含多个类和方法, 用来支持小应用程序窗口, 也可以被用来创建独立运行GUI环境中的窗口。通过AWT可以生成和管理窗口、管理字体、输出文本, 也可以使用图像和动画。
2.3 Java Servlet编程技术
Java Servlet是运行于服务器的服务小程序, 是一个与协议无关且跨平台服务方构件。被集成到服务器中可以实现网络上远程动态加载, 没有与用户交互的界面, 作为服务器端的程序, 负责接受来自客户的请求, 并将处理结果返回给客户。由于现在绝大多数的WEB服务器都Servlet接口, 并且编写Servlet程序的语言是与平台无关的Java语言, 因此Servlet与平台无关。由于其内部以线程式提供服务, 不必为每个请求都启动一个进程, 而是利用多线程机制同时为多个请求服务, 因此Servlet的效率非常高。
2.4 RMI远程方法调用技术
RMI是SUN公司提出的基于Java平台的同质分布式系统 (其硬件平台和操作系统依然是异质的) 中使用的各个对象之间相互调用的接口, 是一个纯Java的解决方案。它支持在不同虚拟机上的各个对象之间无缝地远程调用, 以及从服务器端程序到Servlet程序之间的回调。RMI将分布式的对象调入运用的是面向对象技术, 而不是像RPC那样面向过程, 使得编写分布式应用程序变得简单。使用RMI程序不必再使用Socket来编写复杂的远程调用程序, 并且保留了Java语言提供的安全性。
2.5 Java Beans编程技术
Java Beans是一个软件组件, 被设计成可以在不同的环境中重复使用。Beans允许开发者使用软件组件构造复杂系统。这些软件组件可以自己开发, 也可以由一个或多个不同的厂商提供。Java Beans定义了组件块互相操作行为的体系结构, 但对其功能没有限制。一个bean可以完成简单的功能, 如检查一个文件的拼写;也可以完成复杂功能, 如预测一支股票的业绩。Bean对最终用户是可见的, 如图形用户界面上的一个按钮;也可能对用户不可见, 如实时多媒体解码软件。最后一个Bean可以被设计成在用户工作站上独立工作, 也可以与其他一组分布式组件协调工作。本地工作的Bean的例子如由一组数据点生成饼图的软件;与其他分布式软件合作以获得数据的Bean的例子如提供实时股票价格信息。
2.6 JDBC技术
JDBC同ODBC完全类似, 是为连接异构数据库的提供公共的API。可以实现各种不同数据库间的通信, 使用标准的SQL语句可以实现具体数据库的访问, 而不需要使用特定的数据库命令, 并且实现不同数据库间的应用移植。它利用Java.sql包及接口、类和异常事件通过JDBC-ODBC桥可以操作数据库, 但对数据库无要求, 不需要特别的命令, 只需与ODBC一样在服务器中设置ODBC数据源。
3 Java业务的应用
移动网中的Java业务是一种移动增值体验, 用户通过移动网络环境访问移动运营商的Java业务平台, 将平台上由Java语言编写的应用程序下载到手机终端上后用户可以对该应用进行正常的安装和使用。
Java的最大目标和特点就是“一次编写, 到处运行”的平台无关性, Java1.2以后的版本都统一改名为“Java2”, 针对不同平台和应用形成J2SE (标准版) 、J2EE (企业版) 、J2MB (袖珍版) , 能够开展如下业务应用:
(1) 游戏:包括离线和在线游戏;
(2) 娱乐:如卡拉OK、星象预测、网上聊天、找朋友和电子图;
(3) 新闻:如综合新闻及各种专题新闻、股票行情、交通信息、音乐影视和天气预报;
(4) 基于定位或位置的服务:如位置及地图、交通指南和周边服务等;
(5) 金融、交易、博彩类:如移动银行、彩票和电子商务, 这类服务需要解密安全机制;
(6) 企业或商务应用:如移动办公、移动政务、移动警务和石油斟探等。
摘要:Java语言是适应移动互联网需要的跨平台的编程语言, 本文阐述了Java的跨平台原理, 解析了Java业务的关键技术, 进而指出了Java业务的应用前景。
关键词:Java,Java关键技术,Java业务应用
参考文献
[1]龚永罡, 陈昕.《Java程序设计基础教程》[M].北京:清华大学出版社, 2009.
[2]林邦杰, 《彻底研究Java》[M].北京:电子工业出版社, 2002.
关键词 Java语言; IT技术; Java技术
1 Java语言的开发技术的回顾
从世界上第一台电子计算机诞生到现在,计算机模式的发展经历了三个阶段:集中计算模式、分散就算模式和网络计算模式。由于现在Internet 的出现更是使计算机的科学计算和信息管理得到普及,然而要充分利用这些优势就需要掌握其中一门高级语言,因此Java语言和Java技术就是解决这个问题的关键。
当1995年SUN推出Java语言之后,全世界的目光被之吸引,为什么它是如此神奇呢·
1991年Java诞生,起初被称为OAK语言,是SUN公司为一些消费电子产品而设计的一个通用环境。最初目的只是开发一种独立于平台的软件技术,而且在网络出现之前,OAK语言可以说是默默无为,甚至面临消失。但是网络的出现改变了它的命运。
微软总裁比尔o盖茨在认真观察了一段时间后将其确定为是长时间以来最卓越的程序设计语言,并确定微软整个软件的开发战略从PC单机时代以网络为中心的计算时代转移,而购买Java是他的重大战略实施部署。
因此,Java的诞生对计算机产业的发展产生了深远的影响,对传统的计算模型提出了新的挑战。甚至有人说:Java将成为网络的"世界语",今后用其他高级语言编写的软件系统都要改为用Java语言来写。
2 Java语言的主要特点
2.1 平台无关性。 平台无关性是指Java能运行于不同的平台。Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与机器无关,不同于C语言,Java虚拟机时建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供与不同平台的接口。
2.2 安全性。 Java的编程类似与 C++,学习C++的读者将很快掌握Java的精髓。Java舍弃了C++的指针对存儲器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。Java对程序提供了安全管理器,防止程序的非法访问。
2.3 面向对象。 Java吸取C++面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java 提供了众多的一般对象的类,通过继承即可使用父类的方法。在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。Java 提供的 Object 类及其子类的继承关系如同一棵倒立的树形,根类为 Object类, Object类功能强大,经常会使用到它及其它派生的子类。
2.4 分布式。 Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP 协议传送和接受信息的方法。这使程序员使用网络上的文件和使用本机文件一样容易。
2.5 健壮性。Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自已操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这些功能特征大大提高了开发Java应用程序的周期。Java提供: Null指针检测、 数组边界检测、 异常出口、 Byte code校验。
Java语言除上述主要特点外,还有高性能、分布强、强大性、解释性、可移植性等特点,此处就不再讲述。
3 Java语言的未来展望
在2005年的JavaOne开发者大会上,JamesGosling3结束语作了题为"Java技术下一个10年贡献"的演讲。谈到未来数字媒体将是Java的下一个重点市场,同时,教育和健康将是未来Java发展过程中的两大重点应用领域。JamesGosling还提到了有关Java软件的性能和复杂性问题。鉴于许多机器运行着大量进程的实际情况,人们对线程模型投以越来越多的关注。但愿真能像Sun宣称的那样,Java语言将成为我们未来生活的一部分。在这次大会上,JamesGosling还同Java技术先驱,现任Kleiner、PerkinsCaulfieldandByers合伙人的Bill Joy先生, Sun公司首席科学家JohnGage先生,未来研究所主任PaulSaffo先生,Sun杰出工程师GuySteele先生以及开发Internet AppliedMindes公司主席及首席技术官Danny}Ii11is先生等一起探讨了Java语言的过去和未来发展情况。
他们认为技术提高了计算机的"流动性",就如同货币的发明提高了商品的流动性一样。无所不在的网络丰富了每个人的信息,就如同可以兑换的货币产生了财富一样。由于从前的网络速度很慢,所以计算被束缚在特定的计算机上,而这种情况将一去不复返了。
目前,全球Java开发人员已经超过450万,而与之相对应的是Java社区充满活力和创新精神,这正是Java下一个10年更加繁荣的保障。为了保持Java的增长和推进Java社区的参与,Sun在Java One开发者大会上宣布开放Java核心源代码,以鼓励更多的人参与社团活动中来,这是Sun为推进社团发展和维护Java技术兼容性而迈出的重要一步。
4 结束语
看到Java语言有如此大的发展潜能,在将来Java很可能应用到数字多媒体上,而与此同时Java也会涉足教育和健康两大领域。希望能和Sun说的那样Java会变成我们生活的一部分。
参考文献
[1] 张卫民,廖湘科,Java语言与WWW(计算机技术丛书).
[2] [美]Jerry Ablan编.用Java开发Internet应用
写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java。这次介绍的主要内容是和J2SE相关的部分,经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。
1.JVM相关(包括了各个版本的特性)
对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资深开发者来说,不会JVM几乎是不可接受的。
JVM作为java运行的基础,很难相信对于JVM一点都不了解的人可以把java语言吃得很透。我在面试有超过3年Java经验的开发者的时候,JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证java开发能力的高低。在JVM这个大类中,我认为需要掌握的知识有:
JVM内存模型和结构 GC原理,性能调优
调优:Thread Dump,分析内存结构
class 二进制字节码结构,class loader 体系,class加载过程,实例创建过程 方法执行过程:Java各个大版本更新提供的新特性(需要简单了解)
在兆隆 非高薪 不就业
兆隆IT云学院
2.Java的运行(基础必备)
这条可能出看很简单,java程序的运行谁不会呢?不过很多时候,我们只是单纯通过IDE去执行java程序,底层IDE又是如何执行java程序呢?很多人并不了解。
这 个知识点是最最基本的java开发者需要掌握的,初学java,第一个肯定是教你如何在命令行中执行java程序,但是很多人一旦把java学完 了,IDE用上了,就把这个都忘了。为什么强调要知道这个呢,知道了java最纯粹的启动方式之后,你才能在启动出问题的时候,去分析当时启动的目录多 少,执行命名如何,参数如何,是否有缺失等。这样有利于你真正开发中去解决那些奇奇怪怪的可能和环境相关的问题。在这里需要掌握的知识有:
javac 编译java文件为 class 文件
java 命令的使用,带package的java类如何在命令行中启动
java程序涉及到的各个路径(classpath,java。library。path,java运行的主目录等)
3.数据类型
这条没有什么好多说的,无非就是Java中的基本类型和对象类型的掌握。可以再了解一些JDK如何自动转换方面的知识,包括装箱拆箱等,还要注意避免装箱之后的类型相等的判断
在兆隆 非高薪 不就业
兆隆IT云学院
主要知识点:
基本类型: int,long,float,double,boolean。。对应的对象类型: Integer 等类型到基本类型的转换,装箱和拆箱 Object类型: equals,hashcode String 类型的特点
4.对象和实例,对象的创建
在这方面,开发者需要了解class和instance的概念以及之间的差别,这是java面向对象特性的一个基础。主要知识点有:
Class和 Instance 的概念;
Instance 创建的过程:1.无继承:分配内存空间,初始化变量,调用构造函数;2.有继承:处理静态动作,分配内存空间,变量定义为初始值,从基类->子类,处理定义处的初始化,执行构造方法;
需要注意的点:静态属性等从基类->子类进行初始化;默认无参构造方法相关的特性。
5.访问控制
在兆隆 非高薪 不就业
兆隆IT云学院
这也是java封装特性的一个基础,需要掌握的有:
public protected default private 对于class,method,field 的修饰作用
6.流程控制
Java 流程控制的基础,虽然有些语法不一定很常用,但是都需要了解,并且在合适的地方使用它们。
需要掌握的有:if,switch,loop,for,while 等流程控制的语法
7.面向对象编程的概念
这 是一个java的核心概念,对于任何java开发者都需要熟练掌握。Java中很多特性或者说知识点都是和java面向对象编程概念相关的。在我的理解,一个好的开发者不仅仅需要了解这些特性(知识点)本身,也更需要知道这些对象在java的面向对象编程概念中是如何在兆隆 非高薪 不就业
兆隆IT云学院
体现出来的,这样更有利于开发者掌握 java这门开发语言,以及其他面向对象编程的语言。在这里只是简单罗列了一下,主要的知识点包括有:
面向对象三大特性:封装,继承,多态;各自的定义概念,有哪些特性体现出来,各自的使用场景
静态多分派,动态单分派的概念 重载的概念和使用
继承:接口多实现,基类单继承 抽象,抽象类,接口 多态:方法覆盖的概念和使用 接口回调
8.Static
静态属性在java日常开发中也是经常使用,需要了解和 static 关键字相关的用法,还有和其他关键字的配合使用,如是否可以和 abstract,final 等关键字联合使用。主要需要掌握的有:
静态属性的定义,使用,以及类加载时如何初始化 静态方法的定义和使用 静态类的定义和使用
在兆隆
非高薪
不就业
兆隆IT云学院
静态代码块的定义和初始化时机
9.基础知识点
这里主要罗列一些散落的,没有系统归类的一些java知识点。在日常的开发中用到也不少。这块内容其实还有很多,目前只是暂时归纳了这几个在这里:
包括有:equals,hashcode,string/stringbuffer,final,finally,finalize
10.集合框架
这 个是一个需要多加掌握的部分,做java开发,可以说没有不用到集合框架的,这很重要。但是这里的知识点并不难,但是对于集合最好要了解内部的实现方式,因为这样有助于你在各个不同的场景选择适合的框架来解决问题,比如有1W个元素的集合,经常要进行contains判断操作,知道了集合的特性或者内部实 现,就很容易做出正确的选择。这里包括了如下内容(并发相关不包含在内):
集合框架的体系: 基础Collection,Map
在兆隆 非高薪 不就业
兆隆IT云学院
具体集合实现的内容,List,Set,Map 具体的实现,内部结构,特殊的方法,适用场景等
集合相关的工具类 Collections 等的用法
11.异常框架
异 常在java的开发中可能没有那么被重视。一般遇到异常,直接上抛,或者随便catch一下处理之后对于程序整体运行也没有什么大的影响。不过在企业级设 计开发中,异常的设计与处理的好坏,往往就关系着这个系统整体的健壮性。一个好的系统的异常对于开发者来说,处理应该统一,避免各处散落很多异常处理逻辑;对于系统 来说,异常应该是可控的,并且是易于运维的,某些异常出现后,应该有应对的方法,知道如何运维处理,所以虽然异常框架很简单,但是对于整个企业级应用开发 来说,异常处理是很重要的,处理好异常就需要了解Java中的异常体系。
这部分需要掌握的知识点不多,主要就是:
异常的体系: Throwable Exception RuntimeException Error
RuntimeException 和 一般 Exception 的区别,具体处理方法等
在兆隆
非高薪
不就业
兆隆IT云学院
12.Java IO
IO 在java中不仅仅是文件读写那么简单,也包括了 socket 网络的读写等等一切的输入输出操作。比如说 标准HTTP请求中Post的内容的读取也是一个输出的过程,等等… 对于IO,Java不仅提供了基本Input、Output相关的api,也提供了一些简化操作的Reader、Writer等api,在某些开发(涉及大量IO操作的项目)中也很重要,一般日常的开发中也会涉及(日志,临时文件的读写等)。在这中的知识点主要有:
基本IO的体系: 包括有InputStream,OutputStream,Reader/Writer,文件读取,各种流读取等
NIO 的概念,具体使用方式和使用场景
13.多线程并发
在兆隆 非高薪 不就业
兆隆IT云学院
多线程是Java中普遍认为比较难的一块。多线程用好了可以有效提高cpu使用率,提升整体系统效率,特别是在有大量IO操作阻塞的情况下;但是它也是一柄双刃剑,如果用不好,系统非但提升不大,或者没有提升,而且还会带来多线程之间的调试时等问题。在多线程中内容有很多,只是简单说明一下Java中初步使用多线程需要掌握的知识点,以后有机会单独再详细介绍一些高级特性的使用场景。
多线程的实现和启动 callable 与 runable 区别
syncrhoized,reentrantLock 各自特点和比对 线程池
future 异步方式获取执行结果 concurrent 包 lock ..14.网络
在兆隆 非高薪 不就业
兆隆IT云学院
Java 中也是提供了可以直接操作 TCP协议、UDP协议的API。在需要强调网络性能的情况下,可以直接使用TCP/UDP 进行通讯。在查看Tomcat等的源码中,就可以看到这些相关API的使用情况。不过一般也比较少会直接使用TCP,会使用诸如MINA、Netty这样 的框架来进行处理,因为这个方面的开发涉及不多,所以就不再详细罗列了。
15.时间日期处理
几乎对于每个应用来说,时间日期的处理也是绕不过去的,但是JDK8 之前的时间相关API用法并不友好。在那个时代,可以选择Joda等时间框架。到了JDK8 发布之后,全新的时间API基本融合了其他框架的优点,已经可以很好的直接使用了。对于Java开发者来说,需要熟练地使用API来对时间和日期做相关的处理。
具体知识点不再罗列,会在以后再写个专门的文章来总结一下JDK8中时间日期API的用法。
16.XML解析/ JSON解析
在兆隆 非高薪 不就业
兆隆IT云学院
其实这两块内容都不是J2SE里面的内容,但是在日常开发中,和其他程序交互,和配置文件交互,越来越离不开这两种格式的解析。
不过对于一个开发者来说,能够了解一些XML/JSON具体解析的原理和方法,有助于你在各个具体的场景中更好的选择合适你的方式来使得你的程序更有效率和更加健壮。
XML: 需要了解 DOM解析和 SAX解析的基本原理和各自的适用场景
JSON: 需要了解一些常用JSON框架的用法,如 Jackson,FastJson,Gson 等。
17.Maven的使用
Maven 也不是Java里面的内容,但是maven是革命性的,给java开发带来了巨大的便利。从依赖的引入和管理,开发流程的更新和发布产出,乃至版本的更 新,使用maven可以大大简化开发过程中的复杂度,从而节省大量时间。可以说,maven已经成为java开发者的标配了。所以我把maven也作为一 个java开发者对于基础必备的知识点。以后会再放上一些我的一些对于maven使用的经验和技巧等,这里就不再细说了。
18.泛型
在兆隆 非高薪 不就业
兆隆IT云学院
这是JDK5开始引入的新概念,其实是个语法糖,在编写java代码时会有些许便利,一般的应用或者是业务的开发,只需要简单使用,不一定会用到定义泛型这样的操作,但是开发一些基础公共组件会使用到,可以在需要的时候再细看这个部分,一般情况下只要会简单使用即可。
19.标注
也是jdk5 之后引入的。Spring是个优秀的框架,最开始就以xml作为标准的配置文件。不过到了Spring3 之后,尤其是 spring-boot 兴起之后,越来越推崇使用标注来简化xml配置文件了,对于开发者来说,可以节省不少xml配置的时间。但是劣势是在于标注散落在各个类中,不像xml,可以对所有配置有个全局性的理解和管理,所以还没有办法说完全就取代所有的xml。对于一般开发者,会使用标注即可,一些公共组建的开发者可能会需要了解 标注的定义和实现,可以在具体需要的时候再细看。
20.RMI
在兆隆 非高薪 不就业
兆隆IT云学院
RemoteMethodInvocation,Java语言特有的远程调用接口,使用还是比较简单方便。不过需要跨语言的情况下,就需要使用 webservice 等其他方式来支持。一般来说,程序都不需要使用RMI,不过可以在特定的情况下使用,我就在一个项目中,使用RMI来进行程序远程启动停止的控制。
21.JNI
Java Native Interface,可以允许Java中调用本地接口方法,一般用于C/C++代码的调用。需要注意的是在java中加载so/dll文件的路径问题,本身调用接口并不复杂,但是经常在是否加载了所需的本地接口库中花费较多时间。
以上也只是简单介绍了下我对于这些java基本知识点和技术点的一些看法和介绍,这些内容都源自于我这些年来使用java的一些总结,希望给刚刚接触Java,或者打算从Java开发的人一些经验,希望能够更有效率地学习和使用java,避免走了弯路浪费了宝贵的时间。
【java技术人员】推荐阅读:
专业技术人员职称人员12-16
专业技术人员管理07-13
医疗技术人员准入制度05-30
技术开发人员简历06-02
网络技术人员简历07-01
专业技术人员大数据10-14
技术人员论坛策划书11-03
工程人员专业技术考核11-17
卫生技术人员考核制度11-26
电气技术人员安全职责12-19