Java软件工程师的发展之路

Java软件工程师未来的发展方向大致可以分为两类:

第一,成为管理者,比如产品研发经理、技术经理、项目经理等。

二是继续他的技术工作,成为高级软件工程师和需求工程师。Java语言是面向对象的。Java语言提供了类、接口和继承等原语。为了简单起见,只支持类之间的单一继承,支持接口之间的多重继承,支持类和接口之间的实现机制(关键字是implements)。Java语言完全支持动态绑定,而C++语言只对虚函数使用动态绑定。总之,Java语言是一种纯面向对象的编程语言。

Java语言是分布式的。Java语言支持互联网应用程序的开发。在基本的Java应用编程接口中,有一个网络应用编程接口(java net),提供了网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

Java语言是健壮的。Java的强类型机制、异常处理和垃圾自动收集是Java程序健壮性的重要保证。丢弃指针对Java来说是明智的选择。Java的安全检查机制使得Java更加健壮。

Java语言是安全的。Java通常用于网络环境。为此,Java提供了一种安全机制来防止恶意代码攻击。除了Java语言的很多安全特性之外,Java对通过网络下载的类有一个安全防护机制(ClassLoader),比如分配不同的命名空间防止用相同的名字替换本地类,检查字节码,为Java应用提供一个安全管理机制(Class SecurityManager)来设置安全防护。

Java语言是架构中立的。Java程序(带有Java后缀的文件)在Java平台上被编译成与架构无关的字节码格式(带有class后缀的文件),然后可以在任何实现这个Java平台的系统上运行。这种方法适用于异构网络环境和软件分发。

Java语言是可移植的。这种可移植性来自于架构的中立性。此外,Java还严格规定了每个基本数据类型的长度。Java系统本身具有很强的可移植性,Java编译器用Java实现,Java的运行环境用ANSI C实现。

Java语言是编译和解释的。如上所述,Java程序在Java平台上被编译成字节码格式,然后可以在任何实现这个Java平台的系统上运行。在运行时,Java平台中的Java解释器解释并执行这些字节码,执行过程中需要的类在join阶段加载到运行时环境中。

Java是高性能的。与那些解释型高级脚本语言相比,Java确实是高性能的。事实上,随着JIT(Just-In-Time)编译器技术的发展,Java的运行速度已经可以和优化后的本地代码相媲美。

Java语言是多线程的。在Java语言中,线程是一个特殊的对象,它必须由Thread类或其子类创建。创建线程通常有两种方式:一种是通过使用Thread(Runnable)类型的构造函数将带有Runnable接口的对象包装成线程;另一种是从thread类派生一个子类,重写run方法,用这个子类创建的对象就是一个线程。值得注意的是,Thread类实现了Runnable接口,所以任何线程都有它的run方法,run方法包含了线程想要运行的代码。线程的活动由一组方法控制。Java语言支持多线程的同时执行,并提供了多线程之间的同步机制(关键字是synchronized)。

Java语言是动态的。Java语言的设计目标之一是适应动态环境。Java程序需要的类可以动态加载到运行环境中,也可以通过网络加载。这也有利于软件升级。此外,Java中的类有一个运行时表示,可以检查运行时的类型。Java语言的优秀特性使得Java应用程序极其健壮可靠,这也降低了应用系统的维护成本。Java对对象技术的全面支持和Java平台中的嵌入式API可以缩短应用系统的开发时间,降低成本。Java可以编译一次,然后在任何地方运行,这使它能够提供一个可以在任何地方使用的开放结构,以及在多个平台之间传输信息的低成本方式。特别是Java企业API为企业计算和电子商务应用系统提供了相关技术和丰富的类库。

Java和C/C++的区别熟悉C语言和C++语言的读者一定想明白这个问题。事实上,Java确实继承了C语言和C++语言的很多成分,甚至可以看作是类C语言发展和衍生的产物。比如Java语言的变量声明、运算符形式、参数传递、流程控制,都和C语言、C++语言一模一样。尽管如此,Java与C语言和C++语言还是有许多不同之处,主要表现在以下几个方面:

(1) Java中的内存分配是动态的。它采用面向对象的机制,并使用运算符new为每个对象分配内存空间。而且实际内存会随着程序的运行而变化。程序运行过程中,Java系统会自动扫描内存,将长时间不用的空间作为“垃圾”收集起来,使系统资源得到更充分的利用。根据这种机制,程序员不必关注内存管理问题,使得Java程序的编写变得简单明了,避免了内存管理中的错误导致的系统问题。在C语言中,内存由malloc()和free()库函数分配和释放,而在C++语言中,内存由运算符new和delete分配和释放。在C和C++的机制中,程序员必须非常小心地处理内存的使用。一方面,如果释放的内存再次释放或者释放未分配的内存,会造成崩溃;另一方面,如果长期不用或者不再使用的内存不释放,会浪费系统资源,甚至造成资源枯竭。

(2) Java不在所有类之外定义全局变量,而是在一个类中定义一个公共静态变量来完成全局变量的功能。(3) Java不使用goto语句,而是使用try-catch-finally异常处理语句代替goto语句来处理错误。(4) Java不支持头文件,但C和C++语言都使用头文件定义类原型、全局变量、库函数等。这种头文件结构使得系统的操作和维护相当复杂。

(5) Java不支持宏定义,而是使用关键字final来定义常量,C++中使用宏定义来定义常量,不利于程序的可读性。

(6) Java给每个数据类型分配一个固定的长度。比如在Java中,int的类型总是32位,但是在C和C++中,同样的数据类型对于不同的平台分配了不同的字节,这也是int的类型,在PC中是两个字节,也就是16位,而在VAX-11中是32位。这使得C语言不可移植。

(7)不同类型的转换。在C和C++中,可以通过指针进行任意类型转换,这往往会导致不安全。在Java中,运行时系统应该检查对象的类型兼容性,以防止不安全的转换。

(8)结构和接头处理。在C和C++中,结构和联合的所有成员都是公共的,这带来了安全问题。但是,在Java中,根本不包含结构和联合,所有内容都封装在类中。

(9) Java不再使用指针。指针是C和C++中最灵活也最容易出错的数据类型。指针对内存地址的操作往往会导致不可预知的错误,同时,指针对一个内存地址进行显式类型转换后,可以访问C++中的一个私有成员,从而破坏安全性。但是Java对指针有完全的控制权,程序员不能直接进行任何指针操作。

(10)避免平台依赖。用Java语言编写的类库可以在其他平台的Java应用中使用,不像C++语言必须依赖Windows平台。

(11) Java在B/S开发上远远优于C++。自从sun被甲骨文收购后,Java的发展前景变得扑朔迷离,很多程序开发者都很困惑。2010年4月9日,被称为Java之父的JamesGosling在个人博客上宣布从甲骨文离职,这给Java的前景蒙上了一层迷雾。但进入5月后,一切开始变得明朗。首先,在Java的后续支持上,Oracle宣布了一系列关于Java的相关计划。随后Java之父JamesGosling在宣称Java不会消亡后,大赞甲骨文对Java的贡献。在Oracle的活动发布网站上,已经连续发布了多项关于Java的推广活动。

版本介绍

2010 5月12日,甲骨文主要产品经理DaveHofert将讲述JavaSE商业应用的改进与创新。根据宣传资料,在这次演讲中,DaveHofert将会提到以下几个问题:

商业版和社区版平台支持的差异。

如何获得专家帮助,帮助企业增强Java应用?

对于老版本的安全补丁问题。

可用的发布工具和更新。

6月10、2018、19、20、27日,Oracle和Sun专家将分别在赫尔辛基、斯图加特、布达佩斯和伦敦与用户见面,并在会上与用户共同探讨Java的发展路线。讨论的主要问题包括Oracle将如何继续投资和改进Java技术,还将告知用户JavaSE、JavaME专家团队、JavaFX和JDK7的最新消息,以及OracleBerkeley DB的相关信息。

2010年5月3日,离开Oracle近一个月的Java之父JamesGosling在博客上表达了对NetBeans 6.9和FX1.3发布的关注。这两个项目最新版本的发布,可以证明甲骨文已经开始兑现当初的承诺。在他早期的博客中,JamesGosling也透露他不会放弃自己的Java事业,只是需要和甲骨文解决一些法律问题。

这些迹象都表明,甲骨文绝不会轻易放弃Java这块巨大的蛋糕,甲骨文也逐渐学会了尊重开源社区。首先,在商业版JDK方面,Oracle将继续深挖Java的商业利益,并进一步与其固有产品相结合。在社区版本方面,Oracle将与Java开发人员讨论和开发Java技术。这里需要特别提到的一个产品是OracleBerkeleyDB,它是一个由Oracle支持的开源非关系数据库产品。在NOSQL大行其道的今天,如果Oracle能够将BerkeleyDB与Java深度融合,将会给Java带来更多的生机和活力。从JamesGosling的表现来看,似乎已经和甲骨文达成了某种谅解,存在进一步合作的可能。

Java开发

在日新月异的IT技术领域,Java已经不年轻了。十年来,Java借助开放、跨平台的特性和互联网的蓬勃发展,改变了C/C++一统天下的局面,形成了Java、C、C++三足鼎立的格局。特别是Java称霸编程语言排行榜10年,帮助Sun奠定了在IT技术和开源领域的地位,这些都说明了Java在开发领域的重要性。

在未来的发展方向上,Java在Web、移动设备、云计算方面有着非常广阔的前景。尽管面临着来自网络的Ruby on Rails等编程平台的挑战,Java仍然是事实上的企业Web开发标准。就Java对新开发者的吸引力而言,这么多年来,Java一直面临着基于脚本的编程语言不成熟的挑战。比如PHP和Ruby,尽管努力了很多年,也没有看到它们比Java更有竞争力。另一方面,随着云计算和移动领域的扩展,越来越多的企业开始考虑将自己的应用部署在Java平台上。无论是本地主机,公有云,还是Java,都是目前最合适的选择。

事实上,Java技术的开放性、安全性和巨大的社会资源,以及其跨平台的特性,即“一次编写,随处运行”,也使得Java技术成为智能手机软件平台事实上的标准。采用Java技术后,编写应用程序和提供服务的人不必关心接收他们服务的手机用的是什么操作系统和芯片,只要按照Java的要求编写程序即可;同样,手机的制造商也不用担心将来谁来提供增值服务。同时,在甲骨文技术投入的保障下,Java也将是企业在云应用上避开微软平台,在移动应用上避开苹果的最佳选择。例如,VMware宣布了一项名为VMforce的服务,该服务将在云计算机中部署Java应用程序,谷歌应用程序引擎将继续支持Java。都是微软基于提供的Azure云平台的竞争对手。Net和开源PHP语言。另外,进入传统桌面应用仍然是Java未来努力的方向之一。

JAVA作为商业应用的主流语言,在3G和物联网时代焕发了新的活力!

在互联网时代,JAVA语言一直是使用最广泛的服务器端语言。随着3G和互联网时代的到来,JAVA语言不会“过时”。相反,JAVA语言在新的业务领域会有更加辉煌的发展前景。

3G和互联网的发展不仅带动了智能手机制造、电信运营、RFID产业、嵌入式设备等硬件或系统软件产业的发展。更重要的是,3G和互联网在商业领域创造了更多更新的应用,而这些领域的核心编程语言依然是JAVA!

在TTS4.0课程体系中,基于智能手机平台的“航空公司移动服务门户”项目和基于全球定位、订单实时跟踪、RFID仓储管理等诸多互联网新技术的“新一代物流管理系统”项目就是这些新业务应用领域的典型代表。

未来趋势

对于Java来说,2010是不平凡的一年。自从年初Oracle完成对Sun的收购后,大家对Java的未来充满了担忧。5438+02年6月在北京召开的JavaOne大会可以说是甲骨文收购Sun后的第一次正式大会,大家可以从JavaOne上了解到更多Java未来的发展。2011这一年将是Java的新开始。

Java已经走过了它的15年,在日新月异的it技术领域,它已经不年轻了,但它从未停止过变革和创新的步伐。Java不仅仅是一种计算机语言。很多时候,我们称之为平台,社区。下面从Java SE、Java EE、Java ME、JavaFX等方面对2011的Java技术发展进行展望。

Java SE

从甲骨文公布的Java未来战略可以看出,甲骨文的目标是加强并继续拓展Java在新领域的应用,并将Java平台纳入新的部署架构,加大对Java社区的投入,让社区更多地参与进来。开发者比较关注的Java SE 7将在2011的夏天准备好。其中,JCP已经批准了JSR 334、JSR 335、JSR 336和JSR 337,支持Java语言和API规范的改进,如string中的switch、multi-catch、泛型实例创建中的精确重掷、Lambda表达式(闭包)等。而Java SE 8将在SE 7发布后的一至一年半内准备就绪。

模块化虚拟机(Modular VM ):虚拟机可以分成小块供应用程序使用,并根据需要推送到互联网上。因此,当VM不在目标机器上时,Java应用程序的启动时间更短,下载时间更短。

额外的语言支持:Java平台支持用不同语言编写的应用程序,未来将增加更多的语言支持,包括对动态语言的支持。这就是所谓的达芬奇机或者多语言虚拟机。请参考JSR-292。

增强的多核支持:新的和现有的Java应用需要工具、库和内置设施来更有效地利用多核硬件的优势。Java的线程模型可以很容易地创建并行执行任务的线程,但是如何将单个任务拆分成多个片段进行并行执行呢?

其他改进包括持续的性能改进,以及许多语言增强,包括添加闭包、支持switch语句中的字符串和多块异常捕获。闭包是一个有争议的函数,它是通过使用匿名Java内部类实现的。

Java EE

Oracle长期以来一直是Java的支持者,也是最大的JCP成员之一。早在10多年前就开始参与Java EE规范的编写,所以Oracle成为Java中间件市场的大鳄应该不足为奇。

Java EE展望

模块化,开发标准:Java EE 6通过Profile的定义实现了模块化的Java EE,允许厂商根据具体需求创建更小的Java EE栈子集,解决了成本和Java EE使用的复杂问题。通过模块化设计和定义标准,有助于简化Java EE,使其得到更广泛的应用。

Java EE 6指定了两种配置文件:Web配置文件(Servlet、JSP和JSF)和Java EE企业配置文件。显然,可以定义更多类型的配置文件,例如,定义电信服务器配置文件以支持会话发起协议(SIP)。

UI和RIA:HTML仍然是Java EE应用的隐式UI协议,通常由Java Servlet、JSP和JSF生成。考虑到制作出来的网页是静态的,可以使用Ajax技术,但这超出了Java EE的范围。

虽然Oracle在这方面还没有具体的计划,但是将来Java EE和JavaFX集成的时候,Ajax的问题就解决了。

Java我

Java作为Oracle首选的移动环境,未来这个栈的默认呈现方式将是HTML、CSS和Javascript。Java ME将包括WebKit引擎、JavaScript。引擎和Java/JavaScript。大桥。换句话说,未来运行新版Java ME的手机将可以访问浏览器之外的Web服务,而不会出现任何性能问题。这些引擎将直接插入Java ME虚拟机和Java FX。

甲骨文的Java ME引擎将利用当代图形硬件加速器擅长的(60帧/秒)2D和3D渲染(在Windows环境下,微软的Direct X、OpenGL或未来“更好”的技术)。Java ME将针对ARM7和ARM9芯片组进行优化,包括Broadcom、Samsung、NEC、德州仪器以及其他授权的手机组件制造商,还将内置API,充分利用手机设备的支付、呼叫和定位功能。

JavaFX

随着JavaFX和Java的集成并运行在JVM上,其富媒体处理和二维、三维渲染功能也将可供运行在JVM上的任何其他编程语言使用,这意味着Groovy、Scala和JRuby也可以用于集成JavaFX的功能。

JavaFX outlook:

创建基于可视组件的设计范例

为JavaFX应用程序创建丰富的UI扩展库。

提高JavaFX在所有平台上的性能。

增强跨设备移植JavaFX应用程序的能力。

与Java、JavaScript和HTML 5无缝集成。

支持新兴设备和UI范例(例如多点触控)