高级Java软件工程师必须学什么

高级Java软件工程师必须学什么,第1张

很多人都知道,在IT行业中,想要获得高薪最重要的是拥有过硬的技术。在学习Java软件开发的过程中,小白和大神的区别也是非常大的,无论是在薪资还是技术也是相差甚远。对于对于处于小白级别的人员想要成为大神应该怎么办呢?下面电脑培训为大家介绍成为高级Java软件工程师的必学点。

想要成为Java软件开发大神最重要的就是不断的学习和进步,在学习中掌握知识和技能,并且养成实践 *** 作能力。很多时候,你离大神仅仅只差动手实践能力,对于一些小细节是不能忽略的。

1、在学习Java软件开发过程中,最重要的是了解面向对象与设计,并且还需要涉及综合模式的学习。

2、在学习过程中,掌握Java语言的基础知识,掌握进行Java语言开发需要使用的数据库。

3、Java编程语言所包含的内容是非常多的,在学习的过程中需要了解Java所包含的内容,其中IT培训发现主要包括JVM、classloaders、classreflect等相关内容。

4、如果您要编写客户端程序,则需要学习Web应用程序,您必须掌握GUI设计的思想和方法,以及桌面程序的SWING,AWT,SWT。

5、在学习Java开发的时候,数据库的使用是非常关键的,至少需要了解一种相关的数据库构架。

6、这个时候您还需要学习如何使用和管理Web服务器,以及了解如何扩展和维护Web应用程序。

7、在学习过程中,你还需要熟悉现在主流的网页框架模式,并且北京北大青鸟认为还需要重点关注可以涉及的模式有哪些。

8、在整个过程中,你需要学会如何使用Java的API和具体的工具进行构建WebService。

9、想要成为大神,在学习技术的时候不能马虎,需要熟悉不同的技术,最关键的还是熟悉不同的J2EE技术。

10、您需要了解如何管理和配置J2EE应用程序服务器。您还需要了解如何在其上打包和配置应用程序,以及监视和调整其性能。

11、您必须了解实际的项目开发过程,北大青鸟北京计算机学院认为至少有两个具有实际应用价值的项目,而不是实践项目。

一、 *** 作系统:

Microsoft Windows : 汇编 -> C -> C++

备注:曾经在智能手机的 *** 作系统(Windows Mobile)考虑掺点C#写的程序,比如软键盘,结果因为写出来的程序太慢,实在无法和别的模块合并,最终又回到C++重写。

相信很多朋友都知道Windows Vista,这个系统开发早期比尔盖茨想全部用C#写,但是最终因为执行慢而放弃,结果之前无数软件工程师日夜劳作成果一夜之间被宣告作废。

Linux :C

Apple MacOS : 主要为C,部分为C++。 备注: 之前用的语言比较杂,最早是汇编和Pascal。

Sun Solaris : C

HP-UX : C

Symbian OS : 汇编,主要为C++。 (诺基亚手机)

Google Android :2008 年推出: C语言(有传言说是用Java开发的 *** 作系统,但最近刚推出原生的C语言SDK)

RIM BlackBerry OS 4x : 黑莓 C++

二、图形界面层

Microsoft Windows UI : C++

Apple MacOS UI (Aqua) : C++

Gnome (Linux图形界面之一,大脚): C和C++, 主要是C。

KDE (Linux图形界面) ,C++。

三、桌面搜索工具

Google Desktop Search : C++

Microsoft Windows Desktop Search : C++

Beagle (Linux/Windows/UNIX 下): C# (基于开源的 net : Mono)

四、办公软件

Microsoft Office : 在 汇编 -> C -> 稳定在C++

Sun Open Office : 部分JAVA(对外接口),主要为C++ (开源,可下载其源代码)

Corel Office/WordPerfect Office : 1996年尝试过Java,次年被抛弃,重新回到C/C++

Adobe Systems Acrobat Reader/Distiller : C++

五、关系型数据库

Oracle : 汇编、C、C++、Java。主要为C++。

MySQL : C++

IBM DB2 : 汇编、C、C++,主要为C。

Microsoft SQL Server : 汇编 -> C->C++

IBM Informix : 汇编、C、C++,主要为C。

SAP DB/MaxDB : C++

六、Web Browsers/浏览器

Microsoft Internet Explorer : C++

Mozilla Firefox : C++

Netscape Navigator : The code of Netscape browser was written in C, and Netscape engineers, all bought to Java (see M Cusumano book and article) redeveloped the browser using Java It was too slow and abandoned Mozilla, the next version, was later developed using C++

Safari : (2003年1月发布)C++

Google Chrome : (2008的发布)C++

Sun HotJava : Java (死于1999年)

Opera : C++ (手机上占用率比较大)

Opera Mini : Opera Mini (2007) has a very funny architecture, and is indeed using both C++ and Java The browser is split in two parts, an ultra thin (less than 100Kb) "viewer" client part and a server side responsible of rendering The first uses Java and receives the page under the OBML format, the latter reuses classical Opera (C++) rendering engine plus Opera's Small Screen Rendering, on the server This allows Opera to penetrate various J2ME-enabled portable devices, such as phones, while preserving excellent response time This comes obviously with a few sacrifices, for instance on JavaScript execution

Mosaic : 鼻祖(已死) C 语言

七、邮件客户端

Microsoft Outlook : C++

IBM Lotus Notes : Java

Foxmail : Delphi

八、软件开发集成环境/IDE:

Microsoft Visual Studio : C++

Eclipse : Java (其图形界面SWT基于C/C++)

Code::Blocks : C++

易语言: C++

火山中文: C++

火山移动: C++

九、虚拟机

Microsoft Net CLR (NET的虚拟机): C++

Java Virtual Machine (JVM) : Java 虚拟机:C++

十、ERP软件 (企业应用)

SAP mySAP ERP : C,后主要为“ABAP/4”语言

Oracle Peoplesoft : C++ -> Java

Oracle E-Business Suite : Java

十一、商业智能(Business Intelligence )

Business Objects : C++

十二、图形处理

Adobe Photoshop : C++

The GIMP : C

十三、搜索引擎

Google : 汇编 与 C++,主要为C++

十四、著名网站

eBay : 2002年为C++,后主要迁至Java

facebook : C++ 和 PHP

This line is only about facebook, not its plugins Plugins can be developed in many different technologies, thanks to facebook's ORB/application server, Thrift Thrift contains a compiler coded in C++ facebook people write about Thrift: "The multi-language code generation is well suited for search because it allows for application development in an efficient server side language (C++) and allows the Facebook PHP-based web application to make calls to the search service using Thrift PHP libraries" Aside the use of C++, facebook has adopted a LAMP architecture

阿里巴巴和淘宝: php->C++/Java(主要用)

十五、 游戏 :

汇编、C、C++

星际争霸、魔兽争霸、CS、帝国时代、跑跑卡丁车、传奇、魔兽世界 数不胜数了,自己数吧

都是用C++开发的,C++语言靠近系统地称,执行速度最快。比如你的两个朋友与你分别玩用VB、Java、与C++编写的“跑跑卡丁车”,你玩C++编写的 游戏 已经跑玩结束了,发现你的两个朋友还没开始跑呢,那是相当的卡啊,

十六、编译器

Microsoft Visual C++ 编译器: C++

Microsoft Visual Basic 解释、编译器: C++

Microsoft Visual C# : 编译器: C++

gcc (GNU C compiler) : C

javac (Sun Java compiler) : Java

Perl : C++

PHP : C

十七、3D 引擎

Microsoft DirectX : C++

OpenGL : C

OGRE 3D : C++

十八、Web Servers (网页服务)

Apache : C和C++,主要为C

Microsoft IIS : C++

Tomcat: Java

Jboss: Java

十九:邮件服务

Microsoft Exchange Server : C->C++

Postfix : C

hMailServer : C++

Apache James : Java

二十:CD/DVD 刻录

Nero Burning ROM : C++

K3B : C++

二十一:媒体播放器

Nullsoft Winamp : C++

Microsoft Windows Media Player : C++

Microsoft Windows Media Player : C++

二十二:Peer to Peer (P2P软件)

eMule : C++

μtorrent : C++

Azureus : Java (图形界面使用基于C/C++的SWT,类Eclipse)

二十三:全球定位系统(GPS)

TomTom : C++

Hertz NeverLost : C++

Garmin : C++

Motorola VIAMOTO : 2007年6月,停止服务。 Java。

二十四:3D 引擎

Microsoft DirectX : C++(相信玩 游戏 的同学都知道这个,现在最高版本是DX11)

OpenGL : C

OGRE 3D : C++

二十五:服务器软件

Apache: C

Nginx: C

IIS: C

二十六:其他相关

OpenStack: Python

综述

著名的软件一般是系统软件,软件一般都分为系统软件和应用软件。开发软件分为一次开发和二次开发,比如开发 *** 作系统(系统软件),就是一次开发;在 *** 作基础上进行应用软件的开发,比如开发 游戏 ,就是二次开发。

一次开发的系统软件,要直接调用硬件资源,必须使用简单、直接的底层语言和中层语言,比如汇编和C语言;二次开发应用软件等,因为应用软件的类别比较多的,针对的情况比较复杂和具体,因此可以选择的语言很多,比如,大数据人工智能方面的有Python;安卓手机APP就是Java等等。

这里还有一个误区,其实语言不重要,每种语言都差不多,重要的是开发环境和编程思想。要学习编程开发,学的不是语言,而是对于开发环境工具的使用和编程思维的锤炼。很多著名的软件都是用C等底层语言编写的,但是也可以用其他语言编写,不过很少学C了,其中有商业的原因。(后面会解释)

集成开发环境软件

计算机语言是不可以单独拿出来说的,比如我们说C语言,指的是C语言编译器,而Python语言,指的是Python解释器。而编译器和解释器却都是用C语言编写,是不是很意外,所以著名的软件一般都是系统软件,使用的是C语言,一个语言就要初中水平就可以学会了,但必须了解IDE开发环境。

要使用计算机语言,就必须安装编译器,或者是解释器,程序员是在TXT文本上编写语言的,用编译器可以一次性编译为可执行文件exe,用解释器则可以逐条翻译成机器语言并逐条执行。编译器速度快,解释器可以跨系统,到了别的系统,不需要程序员改写程序,换一个解释器就行了。

IDE集成开发环境具备图形 *** 作界面、编译器、调制器、控制台,是非常重要的开发工具的,只会一个计算机的语言语法,却不会使用IDE,基本上是没用的!

编程思想

很多著名的软件都是使用C等底层语言编写的,而且所用的都是编译器。当然还有另外一个原因,就是编程思想,C语言是面向过程,Python是面向对象。很明显,一次开发的系统软件肯定是面向过程的,而面向具体使用场景的应用软件肯定是面向对象的。

高手可以自由使用编程思想、程序编写时,交替使用各种语言、切换解释器或者编译器,达到隐藏核心代码目的;又或者软件的核心模块采用C等底层代码,保证软件的运行速度。毕竟开发时都是模块化的,不同模块使用不同的方法都是可以的!

所以很多著名的软件,往往是混合着各种语言,核心部分是C,其他部分则根据不同的情况选用不同语言,之所以会这样做,是因为使用C开发软件要耗费大量的时间太。摩尔定律推动硬件发展,软件开发也受到影响,一个软件晚几天推出市场,效果完全不同,所以程序员经常加班赶工,速度才是最重要的。

总结

如上所述,著名的软件是使用C等底层语言、编译器语言、面向过程的语言编写的,更多的是在一个软件的核心部分使用C等底层语言、编译器语言、面向过程的语言,其他则见机行事。

现在主流的语言是java、python和go

Java对于服务器 个人电脑和移动设备来说是一项伟大的技术 由于需要java的跨平台的特性 因此java在服务器和移动设备方面的应用是非常成功的 但java在个人电脑应用方面的情况和在服务器及移动设备方面的应用有所不同 但是这很快就会有所改变 至少比你想象得要快 在这篇文章中 我会分析一下java在桌面环境中的应用将怎样得到提升 然后具体说一下java GUI(用户图形接口)的三个主要的工具:AWT Swing 和SWT 在下文中 我将会开发一个完整的java桌面应用程序 Java与桌面端 现在 流行的桌面平台要数Windows Mac and Linux了 但它们不是十全十美的 Windows主宰著桌面 *** 作系统的市场 其上有巨大的应用和开发群体 但它昂贵且有许多安全漏洞 Linux有着稳固的基础 它是开源的软件 比Windows更可靠 Macs非常容易 *** 作且不是黑客的目标 但与Windows和Linux比起来 Mac的硬件和软件可选的余地非常的有限 公司和个人选择他们的 *** 作系统基于许多因素 花费少且安全性高是首选的因素 这导致一些组织从Windows 系统转而选择Linux 对许多用户来说 可用性及对原有应用程序的支持是非常重要的因素 这意味着Windows 将继续享有巨大的市场 Mac有其自己忠诚的用户 这使得苹果机仍然可以存活 Linux 在桌面的流行及Mac的成功创造了多样性 这种多样性正是Java需要的 这种多样性使得Java在桌面有举足轻重的地位 跨平台的支持 Java 运行于所有相关的 *** 作系统 包括Windows Mac和Linux 对于任何组织 他想把现有的应用从一个 *** 作系统移植到另一个 *** 作系统而不用做太多的改动 那么Java正是他们首选的桌面开发平台 或许用微软的可视化工具很容易构建 NET应用 但是这将使你被绑定在了Windows平台上了 很多人也许想立刻用Linux 代替Windows 从而避免由微软件 *** 作系统的漏洞带来的问题 用户不能容忍的问题之一是当从Windows移植到Linux带来的巨大的费用 如果你的应用程序用Java构建 你就没有了这些问题 Java的图形用户界面看上去会跟你用的 *** 作系统一样 而并不需要做什么改动 假如有一天又有一种桌面 *** 作系统出现的话 java 是个安全的赌注 因为它现在能够运行在Windows和Linux 上 那么可以推测它也可以运行在将来可能出现的 *** 作系统上 这些 *** 作系统可能或迟或早地由微软 或是开源社区 或是其它的人开发出来 丰富的特征 最初 Java只有非常有限的一些特征去构建图形用户界面 思想就是用平台无关的Java应用程序接口打包不同的 *** 作系统的本地图形用户界面 称之为抽象的窗口工具 仅有普通的部件如文件域 文本区 选择框 单选按钮 列表框和按钮被AWT支持 图形和图像的特性支持非常有限 也就是说 只足够构建简单的applet程序 认识到需要更高级的图形用户界面组件和图形能力 Sun公司开发了Swing Java D Java D 图像的输入/输出 Java高级图像(JAI)和很多其它的 这些中的一些窗体组件现在已经是Java 标准版(J SE)里的一部分 并且其它的一些扩展必须和你的应用程序打包在一起 例如Swing Java D 图像的输入/输出都是Java的核心API 随着Java开发工具包(JDK)和Java运行环境一起提供 让我们不要忘了J EE平台 如果你开发服务器端的应用程序并且需要丰富的图形用户界面 那么你毫无疑问应该选择Java 这允许你把服务器端的一些代码移到客户端 反之亦然 例如 一个项目可能开始是基于WEB和图形界面 在某些时候 用户可能要求图形元素不能在HTML中实现 如果你选择java做客户端应用 那么你可以重用这些当初用来做服务器端的代码 如果你用远程调用 一些类会真正地实现服务器和客户端的共享 通过页面服务器 Java桌面应用也能够和其它的Java 或非Java应用程序通信 如CORBA TCP/IP 或是 >

Eclipse简介

近期主要学习当前Java主流开发平台Eclipse,参考书为《Eclipse 从入门到精通》(目前国内Eclipse书籍相当少,图书馆仅有的几本都被借走了,连预约都困难)。

Eclipse最初是IBM的一个软件产品,前期投入了4000万美金。2001年11月,IBM宣布将其捐给开放源码组织Eclipseorg。目前Eclipse的市场占有率已经超过了Borland公司的JBuilder,成为Java开发平台中的主流。

Eclipse的设计思想是:一切皆为插件。它自身的核心是非常小的,其它所有的功能都以插件的形式附加到该核心上。

Eclipse中三个最吸引人的地方:一是它创新性的图形API,即SWT/JFace,在此之前,我曾经用过Java 的AWT/SWING来开发Windows应用程序,AWT/SWING其界面客观地讲不够美观,而且界面响应速度比较慢;而SWT/JFace则大大改善了Java在这方面的能力。二是它的插件机制。三是利用它的插件机制开发的众多功能强大的插件。

二、Eclipse平台体系结构

Eclipse 平台是一个具有一组强大服务的框架,这些服务支持插件,比如Java开发环境插件(JDT)、插件开发环境(PDE)和其他的第三方插件(New tool)。它由几个主要的部分构成:平台运行库、工作区、工作台、团队支持和帮助。

图一:Eclipse平台体系结构

平台运行库是内核,它在启动时检查已安装了哪些插件,并创建关于它们的注册表信息。为降低启动时间和资源使用,它在实际需要任何插件时才加载该插件。除了内核外,其他每样东西都是作为插件来实现的。

工作区是负责管理用户资源的插件。这包括用户创建的项目、那些项目中的文件,以及文件变更和其他资源。工作区还负责通知其他插件关于资源变更的信息,比如文件创建、删除或更改。

工作台为 Eclipse 提供用户界面。它是使用标准窗口工具包(SWT)和一个更高级的API(JFace)来构建的;SWT 是 Java 的 Swing/AWT GUI API 的非标准替代者,JFace则建立在 SWT 基础上,提供用户界面组件。SWT 已被证明是 Eclipse 最具争议的部分。SWT 比 Swing 或 SWT 更紧密地映射到底层 *** 作系统的本机图形功能,这不仅使得 SWT 更快速,而且使得 Java 程序具有更像本机应用程序的外观和感觉。使用这个新的 GUI API 可能会限制 Eclipse 工作台的可移植性,不过针对大多数流行 *** 作系统的 SWT 移植版本已经可用。Eclipse 对 SWT 的使用只会影响 Eclipse 自身的可移植性——使用 Eclipse 构建的任何Java 应用程序都不会受到影响,除非它们使用 SWT 而不是使用 Swing/AWT。

团队支持组件负责提供版本控制和配置管理支持。它根据需要添加视图,以允许用户与所使用的任何版本控制系统(如果有的话)交互。大多数插件都不需要与团队支持组件交互,除非它们提供版本控制服务。

帮助组件具有与 Eclipse 平台本身相当的可扩展能力。与插件向 Eclipse 添加功能相同,帮助提供一个附加的导航结构,允许工具以 HTML 文件的形式添加文档。

三、Eclipse中CVS的使用

CVS(Concurrent Versions System,并发版本系统),是当前最主流的版本控制系统,目前绝大部分开源项目都使用它来做版本管理。

CVS起源于UNIX/Linux平台,在Windows平台的版本是cvsnt。我使用了最新版本cvsnt-25。我只做了一个简单的练习,感觉其版本管理功能非常不错,有利于工程化的软件开发,特别是在团队开发的情况下,其将发挥很大作用。

四、SWT/JFace学习

SWT(Standard Widget Toolkit)和JFace 库来开发用于Eclipse环境的图形用户界面,也可以将它们用于开发单独的 GUI 本机应用程序。

下面介绍几个SWT重要术语:

Widget —— 基本的 SWT GUI 组件(类似于 Java AWT 中的 Component 和 Swing 中的JComponent)。Widget 是一个抽象类。

Control ——拥有 *** 作系统的对等物的窗口小部件(换句话说,在 *** 作系统中具有同一身份)。Control 是一个抽象类。

Composite ——包含其他控件的控件(类似于 Java AWT 中的 Container 和 Swing 中的JPanel)。

Item ——其他控件包含的窗口小部件(该控件可能不是复合控件),比如列表和表。注意,包含一些项的控件很少包含其他控件,反之亦然。Item 是一个抽象类。 这些窗口小部件被安排在继承层次结构中。

在上学期高老师面向对象的课中用过AWT/SWING的基础上,学习SWT/JFace则比较轻松。而且使用Eclipse的SWT Designer插件后,可以图形化很直观地将各个小控件(Button、Text、Label、list、Tree)直接拖到窗口的容器上,大大提高了应用程序界面开发效率。由于以后课题主要是B/S模式基于Web的开发,而非C/S模式的胖客户端Windows应用程序的开发,所以我只是大概了解了下SWT/JFace,重点放在Eclipse的Web开发上。

五、Eclipse的Web开发

Eclipse目前主流的Web开发环境是Tomcat+Lomboz+Struts+Hibernate,其中Tomcat充当Web服务器,Lomboz是J2EE开发的工具,Struts提供MVS框架支持,Hibernate替代笨重的EJB来充当数据库的持久层(以上所有的工具和软件包功能强大而且全部免费,都可以在网上下载到)。

尽管我目前尚不熟悉以上各软件工具,但是在以后的课题中,我倾向于使用该开发环境,学起来应该也比较快。

但是,目前的现实情况是,尽管有一定的ASPNET的开发经验,由于目前我对JSP、J2EE、EJB尚未熟悉,所以我想在之后半个月中集中精力熟悉JSP、J2EE、EJB,然后在八月中旬开始则主要看本体的相关论文。九月份再来熟悉Eclipse的Web开发。

我刚开始学Java 用的eclipse

TableViewer tableViewer = new TableViewer(null);

//设置哪些列可以编辑

CellEditor[] cellEditor = new CellEditor[4];

cellEditor[0] = new TextCellEditor();

cellEditor[2] = new TextCellEditor();

cellEditor[3] = new TextCellEditor();

cellEditor[4] = new TextCellEditor();

//设置列名称,下面ICellModifier会用到

tableViewersetColumnProperties(new String[]{"id","name","age"});

tableViewersetCellEditors(cellEditor);

tableViewersetCellModifier(new ICellModifier() {

@Override

public void modify(Object element, String property, Object value) {

//修改

}

@Override

public Object getValue(Object element, String property) {

//当选中这一列时,显示什么数据

return null;

}

@Override

public boolean canModify(Object element, String property) {

//判断当前选中的是否可以编辑

return false;

}

});

以上就是关于高级Java软件工程师必须学什么全部的内容,包括:高级Java软件工程师必须学什么、一些著名的软件都用什么语言编写、Java桌面端程序开发等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9498227.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存