java工程师路线

2024-04-28

java工程师路线(共6篇)

篇1:java工程师路线

怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西:

首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA)。J2SE,Java 2 Platform Standard Edition,我们经常说到的JDK,就主要指的这个,它是三者的基础,属于桌面级应用开发,这部分如果学得好很容易拓展J2EE和J2ME。J2ME,The Micro Edition of the Java 2 Platform。主要用于嵌入式Java,如手机,PDA等等。J2EE,Java 2 Platform,Enterprise Edition,就是所谓的企业级Java,适合企业的大型应用开发。

J2SE:

新手最初学习的时候先要从J2SE开始学起,所包含的内容主要分为:面向对象概念的理解、Java基本语法的学习,Java桌面图形界面应用程序的开发,掌握常用的Java API等(关键是要学会怎样查阅)。

重点:Java基本语法(循环结构,数据类型,数组,运算符等)、Swing,awt,事件机制、文件输入输出流处理等

难点:面向对象思想的理解(接口、类等)、线程、socket网络编程等

视频教程推荐:孙鑫的Java基础视频教程、张孝祥的Java基础视频教程,讲的都很细,而且这两位老师在教学方面都有很好的经验。

J2EE:

在学习了J2SE之后,你可以尝试着慢慢过渡到J2EE,当然,学习J2EE海需要很多非JAVA技术的支撑,比如数据库技术,网页编程技术等等,待会我会详细介绍这两方面的内容。J2EE有三个必学的框架,如果你说你学了J2EE,但又不会这三个框架的话,那会让人笑掉大牙,这三个框架分别是Struts、Spring和Hibernate,虽然这三个框架应用很广,但不代表这三个框架就代表了J2EE,J2EE还有很多其他的东西,比如EJB,作为一款重量级(此重量级不是指重量级选手那个意思,此重量级非彼重量级)框架,虽然这个应用慢慢的再被其他框架所取代,但EJB3.0的出现也给它带回一些生机,作为一个分布式应用的框架,也是大家要去学习和了解的知识。

当然,刚才说到J2EE包含的范围很广,即使我把我所了解的所有技术说出来,也并不能代表J2EE,这是一个很深很广的学问,需要大家以后再工作的时候慢慢去发现了。我所了解的还包括:

JDBC:Java数据库连接对象,基础中的基础,Hibernate也只是对它的封装而已 JNDI: Java 命名与目录接口,J2EE重要规范之一 EJBS: 上面已经提到过了

RMI: 提供远程调用方法的支持,主要用于程序分布式开发 JMS: Java消息服务,中间件技术

JAVA IDL: 提供J2EE平台与CORBA交互能力和互联能力的技术 JTS: 组件事务监视器 JTA: 事务划分的一个技术 JAVAMAIL: Java中的邮件技术 JAF: Java启动框架,没研究过 Log4j,一款日志处理的框架应用

Junit:单元测试的好帮手

freemarker、velocity:两款不错的模板引擎

与Flash的交互Flex:目前很多的SNS应用就是使用到了这个技术

Web services:想知道我们论坛天气预报的效果是怎么做的吗?请关注这个技术 SOA:面向服务架构,未来技术发展的趋势之一 ……

不过前面介绍到得这些都不是J2EE的基础,是属于框架应用级别的.要真正把上面说到的知识掌握好,还是的学习J2EE最核心的东西:JDBC、JSP、servlet和JavaBean,后面三个也是学习SSH的基础(StrutsSpringHibernate的简称).鉴于J2EE的内容太过复杂,建议大家最初只学习: JSP, servlet和JavaBean,等这个基础掌握好再把SSH学习了,再对其他J2EE技术有个大致的了解就可以出去找工作了。当然,找工作的前提除了把Java学习好,还会有一些其他的技术也是必须要掌握的。数据库技术:

数据库几乎是程序中不可或缺的一部分,在整个软件开发中更是占据了重要作用.数据库在整个软件中扮演的是地基的角色,你要修房子,就要先打好地基,你要做软件,就要先设计好的数据库.目前数据库几乎都是关系型数据库,代表的有: SQL Server,目前最新的好像是2008,我不是很喜欢追赶时髦,用的还是2005,不过也很不错了,在此之前还有2000.MySQL,最知名的开源数据库之一,我很喜欢它的小巧耐用,学过SQL SERVER数据库再学它,无师自通,易如反掌.ORACLE.甲骨文公司的产品,大型数据库,正版的一般公司买不起.只有看看了,不过现在Java开发60%都是会使用到这个数据库,再加上现在甲骨文已经把sun公司收购了,JAVA和ORACLE得关系更加暧昧,各位得多花些时间在这上面了.除了这些,你还应该了解一些桌面应用软件开发用到的数据库,比如说sqlite。你在制作安装程序的时候可以把这个数据库打包进你的安装程序。

网页编程基础:

网页编程基础要学的内容也比较多,但主要集中在以下这三个技术之上,大家每天看的各种样式的网页都是它们呈现的: HTML:超文本标记语言 CSS:层叠样式表

Javascript:浏览器客户端脚本语言

现在更是流行各种JavaScript库,比如:Jquery、ExtJs等,你要是会其中的某一个库的使用,找工作so easy。

J2ME:

如果你在学习了以上技术还不过瘾,可以再学习手机程序的开发,就我个人看来,开发手机程序技术其实蛮简单的,难点在于优化,比如怎么让你写的程序尽量的节约手机资源,“代码诚可贵,手机价更高“,所以不得不比PC机多考虑很多成本和实用性问题。J2ME的学习的话,切忌不要单纯的再模拟器上测试,一定要找真机测试,真机和模拟器的效果之间差别是很大的。更多手机开发技术,有兴趣的朋友可以和我一起探讨。

开发工具:

开发工具的选择主要还是看大家的习惯,我个人比较喜欢使用eclispe,功能很强大,也很好拓展其他的功能。当让初学你也可以选择JCreator,或者最好就直接用记事本。等你熟悉了Java代码之后,就可以使用JBuilder、eclispe或者netbeans这一类的工具了。

先说到这里先,以后大家一起完善这个帖子。尽量再给大家整理一些学习的资源在这里。也欢迎大家一起整理我文章中提到的一些技术资源和开发工具。最后,再和大家分享一句话:生命欣欣向荣,唯奋斗不息。也和大家分享一幅Java学习路线图:

篇2:java工程师路线

但有一些一般的步骤:

1.熟悉一种文本编辑器,比如vim, eclipse, notepad++, textmate等。知道哪些是开源的,哪些是闭源的,哪些要收费。养成不用盗版软件的习惯。

2.安装JDK(建议用你的Linux发行版自带的软件包管理器安装openjdk,过程中可能需要读发行版特定的文档)

3.写一个Java的Hello world程序,并用命令行工具javac编译,再用java命令运行这个程序。过程中熟悉源代码、字节码、虚拟机这些东西,以及Java的包(package)对.class文件所在的路径的影响。

3.5.如果这两个命令行工具使用熟练了,可以开始选一个喜欢的集成开发环境,比如Eclipse。当然,养成不用盗版软件的习惯。熟悉一下如何建立“工程”,以及快捷键的使用。

4.学习Java的面向过程编程,包括基本数据结构、表达式、语句、控制流、函数调用。

5.学习Java的面向对象编程,包括类、引用类型和值类型的区别、成员、方法、访问控制、继承、多态、接口、接口实现。顺便学习一下面向对象的基本思想,即对象、消息、封装、继承、多态等,这些通用的内容不是Java特有的。

5.5 这时候应该已经涉及了Java的垃圾回收。要留意即使有垃圾回收的情况下也会发生的内存泄露(如自己设计数组容器,元素是引用,逻辑上删除了元素,但并没有清成null)。

6.学习Java的异常处理,但更重要的是学习什么时候用特殊返回值而不使用异常,什么时候应该抛出异常而不处理异常,知道什么是pokemon catch及其危害,了解为什么Java的checked exception是一个糟糕的特性。如果愿意,同时学习一下Java1.7的try-with-resource语句和AutoCloseable接口。

7.熟悉Java常用的数据结构,如基本的数组类型,以及泛型容器(java.util.*),尤其是java.util.List接口和java.util.ArrayList实现;以及java.util.Map接口和java.util.HashMap实现。(java1.5以前的没有泛型参数的就不用碰了)同时留意一下基本类型int, double等和装箱类型Integer和Double的区别,以及它们是如何自动转换的。

8.熟悉Java标准库里的各种工具,包括日期时间、字符串格式化、IO等。知道文件要自己在finally子句中close(),或者用Java1.7的try-with-resource,不要妄想垃圾回收器会帮你关掉文件。

9.学习一下Java的命名习惯,以及JavaBeans的常规,知道为什么getter/setter比直接操作成员变量好。按这种方式给Java的变量、方法命名。同时看看你的IDE能不能自动帮你生成getter和setter。

10.使用一个第三方的库(比如Apache Commons Lang通用工具库),让你的程序依赖于它的二进制jar包(而不是直接拷贝源代码),用命令行编译、运行(注意classpath等);也熟悉一下如何用你的集成开发环境添加第三方依赖。感受一下手动管理依赖关系的麻烦。

11.学习Maven的使用,试着让Maven帮你解决依赖关系,再试着让Maven帮你创建一个Eclipse工程。再试试用Maven打包发布。

12.学习软件测试,以及JUnit的使用,以及怎么在IDE中使用JUnit。有空看一下coverage工具。

13.读读四人帮写的《设计模式》(这本书是用C++和Smalltalk语言为例子的,但仍然适合Java)。具体的是这本书,http:///Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612 图书馆应该能还借到英文原版,因为我借到过。

接下来就看具体要做哪方面的应用了,看需求。比如(下面的没有顺序)

【....】如果学Java学得不舒服了,学Python。

* 如果对面向对象编程的概念有点不习惯,学Smalltalk。(Ruby也行,但不如Smalltalk经典。Ruby的文档是一大硬伤。)

* 如果嫌Java太啰嗦,学Python

* 如果嫌Java太啰嗦,又想用JVM,自己又有精力,学Scala

* 如果对对象之间的关系有点晕,学一学UML,以及它的一些图,可以对程序和运行进行直观的建模。你的IDE也许有插件可以生成UML图。但是不要太沉迷于这些方法论。

【调试和辅助工具】学习一下你的集成开发环境提供的调试工具,加一些断点试试

* 试试用jconsole或者VisualVM监控另一个jvm的状态。

* 用profiling工具寻找程序中慢的地方。Eclipse有profiling工具。VisualVM也有这样的功能。(如果不介意使用闭源软件的话,也试试JProfiler和YourKit)

* 有的JVM允许在运行时更新代码。Eclipse可以和某些JVM集成。这样你可以频繁修改代码而不用频繁重启JVM。对于某些“重型”工程很有用。(如果不介意使用闭源软件的话,也试试jRebel)

【多线程】学习Java的多线程编程以及lock、condition的用法(包括传统Java的synchronized语句以及新加的java.util.concurrent.*),学习一下如何让线程停下来,以及为什么要频繁确认isInterrupted()而不要用Thread.stop()。了解一下多核处理器、缓存、内存的关系,以及为什么多线程编程这么难。

* 如果还舒服,学习一下Runnable的用法,以及自带的Executer等基本多线程工具。* 应该已经留意到java.util里面的很多容器不是线程安全的,但是java.util.Collections可以帮你创建一些安全的版本。另外关注一下java.util.concurrent里面有ConcurrentMap等容器可供使用。

* 如果有空的话,看看memory model(内存一致性模型)和无锁同步(见java memory model和java.util.concurrent.atomic)。

* 如果还有空,再了解一下除了“共享内存多线程编程”以外有没有别的模型(多进程multi-processing、消息传递message passing等)。

【反射、元编程】学习Java的反射机制,以及Annotation的用法。

* 如果还舒服,试试java.lang.reflect.Proxy的用法。

* 如果仍然还舒服,玩一玩CGLib(一个第三方的库)。

【网络编程】学习一下IP, TCP协议(计算机专业的应该学过,复习一下),学习Socket编程(注意垃圾回收器不会帮你关掉Socket)。

1.如果不是很关心HTTP,看看java.nio,学习单线程轮询式IO复用(Selector)。

* 如果有点不明白nio的意图的话,了解一下c10k问题。

* 如果身体没有异样的话,大概了解一下操作系统(包括C语言)提供的select, poll, epoll, kqueue等接口。

* 如果身体仍然没有异样的话,试着用java.nio写一个文件服务器。

* 如果还有精力的话,上网扒一扒有没有其他的通信库,如netty等。

2.如果关心Web还有HTTP,就学习一下HTTP协议,以及用Java进行HTTP的客户端编程。

* 如果还舒服,学学HTML,写写HTML的静态网页(不需要Java)

* 如果还舒服,用Java写一个基于DOM、XPath或者CSS Selector的网页解析器(爬网页)。

* 如果还舒服,学学Java的Servlet接口(先别学jsp)进行Web服务器端编程。学学标准的Servlet容器怎么用,包括web.xml的用法以及listener、filter等概念。以及某个Servlet容器(如Jetty或者Tomcat)的具体用法。

* 如果仍然还舒服,试着学一种模板语言(如haml, velocity, freemarker,【还有其他更好的框架吗?我不知道】, String.format,如果真的想学JSP的话JSP倒是也行,但不推荐)。* 如果仍然觉得舒服,学学Spring框架中的Web框架,或者Struts,看你的口味。* 如果还舒服,看看Spring Bean Container以及里面各种乱七八糟的工具。

* 如果还舒服,或者有需求,了解一下什么是RESTful Web Service,复习一下HTTP,找找适合的Java工具。

* 你可能会觉得Jackson是一个解析JSON用的好用的东西。

【数据库】学习一下关系数据库(计算机专业的应该学过,复习一下),包括SQL。选一个数据库管理系统熟悉一下(比如MariaDB,或者(如果你不讨厌Oracle的话)用被Oracle收购了的MySQL。先脱离Java单独学学)。然后看它们的官方文档教你怎么用Java连接这种数据库。这中间会涉及到JDBC接口。同时一定要知道SQL注入安全漏洞,以及掌握如何用PreparedStatement防止注入!。建议看 http://bobby-tables.com/

* 可能中间会涉及“事务”问题,让你不知不觉地开始去了解java transaction api(JTA)。* 如果还舒服,学一学对象关系转换(如Hibernate)。

* 也可以学学非关系数据库,以及如何用Java访问它们。

【日志记录】学习一下slf4j和logback的用法。

* 如果有精力的话,以及大概知道世界上有多少种Java日志框架,以及slf4j是怎么桥接这些框架的。

【构建(build)系统】学习一下Ant的用法。

* 如果还舒服的话,学习一下用Ivy从Maven的仓库里下载软件包,解决依赖关系。

【版本控制】学习一种分布式版本控制器(如Git、Mercurial、Bzr、Darcs等,推荐Git)的基本用法,以及如何用它管理Java工程。希望你已经开始使用Maven了。然后了解一下如何在IDE中使用(Eclipse自带Git插件)。

* 如果感觉很舒服的话,为你们实验室搭建一个Linux+SSH+Git服务器,装个GitLab(一种Web界面)。并说服同事们不要再用SVN、CVS或者SourceSafe等老旧的“集中式版本控制器”了。

* 开设一个GitHub账户。如果你不喜欢Git,就用BitBucket等。

【持续集成】自己(或者为你们实验室)搭建一个持续集成(Continuous Integration)服务器,定期编译你的程序。

【零碎工具】淘一淘java.nio.files里面有什么好用的东东,然后再淘一淘Apache Commons Lang和Commons IO里有什么好用的工具。Commons Logging就不要再用了,用SLF4j和Logback。

【XML】学学XML、DOM、XPath。XML这东西到处都可能用到。也可以用它写自己的配置文件。

* 如果觉得不舒服了,就学学JSON和YAML。

* 如果还是不舒服,就学学文本文件解析。

【语法分析和编译器】学学Antlr或者别的Parser Generator的用法

* 如果觉得舒服,自己写一个计算器。

* 如果还觉得舒服,自己写一种Domain-Specific Language(DSL)。

【高效容器】学学FastUtil或者Trove,如果你需要进行大量数值运算的话。

【分布式计算】学学MapReduce的思想以及它的实现。

* 如果还舒服,学学Scala语言以及号称比MapReduce快得多的Apache Spark。

【进程间通信】看看ActiveMQ、MINA和RMI。

【其他语言(JVM)】学习另一门跑在JVM上的语言或者实现(如Groovy、Scala、Clojure、JRuby、Jython、JavaScript……)

* 如果还舒服,学一学Java Scripting API(注意不是JavaScript。给个链接: http://docs.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/),然后试着在自己的Java程序里嵌入脚本。

【其他语言(非JVM)】学习另一门通用脚本语言(如Python、Ruby,其实perl也行,但不推荐),知道什么时候Java不是最好的选择。

【Java语言和Java虚拟机】通读一遍(一目十行地读,不用细读)Java Language Specification,以及Java Virtual Machine Specification。

* 了解以下解释器(interpreter)、编译器(compiler)、即时编译器(just-in-time compiler)和优化器(optimiser)的概念。

* 如果对编译器的话题不感到畏惧,了解一下method JIT和tracing JIT的概念和区别。

【内存管理】学学垃圾回收的几种基本算法,包括mark-sweep、mark-compact、semi-space、generational、mark-region等,各自的性能,以及为什么朴素的reference counting是不完整的。知道为什么finalizer性能很糟糕,而且标准并不要求finalizer在程序退出前一定会执行。* 如果还舒服,了解一下如何设置Java虚拟机的堆大小限制(如HotSpot虚拟机的-Xmx选项等)。

* 了解一下Java里的WeakReference以及SoftReference和PhantomReference,以及它们什么时候有用,以及为什么它们实现起来有些困难。

* 如果有精力,了解一下Hotspot虚拟机的内存管理算法是什么样的。

【动态装载】学学Java的动态装载(class loading)

* 如果还舒服的话,学学OSGI以及它的一种实现(如Felix或者Equinox)

* 如果仍然很舒服的话,学学写基于Eclipse平台的程序。不是Eclipse集成开发环境,只是利用他们的图形框架,写自己的应用程序。

* 如果还觉得舒服的话,写Eclipse集成开发环境的插件。

【本地/外语接口】学习一下Java Native Interface(JNI),试着写一个Java和C语言混合编程的程序。

* 如果觉得不舒服了或者觉得欲仙欲死,就学一学Java Native Access(JNA),试一试不用任何胶水代码而从Java直接装载C库,直接调用C函数。

* 如果连JNA也懒得学,就学一学SWIG,自动生成绑定。

* 如果觉得舒服,就学一学Java Virtual Machine Tooling Interface(JVMTI),用C程序来监视JVM的状态。

【密码学】学一学密码学,包括编码、密码分析、攻击、对称密钥、公钥系统、数字签名、哈希算法等,看看Java有没有实现。

* 如果觉得有点不舒服(你应该不会觉得舒服吧,除非你是学密码学的,要不然总会觉得自己写的程序有安全漏洞),就写一个“人品计算器”来放松一下,要求每次输入同一个姓名,得到的人品值是固定的,但又要让人无法用别人的人品值猜自己的人品值。

【移动终端】学一学Android开发。

* 如果有精力的话,看看Dalvik虚拟机是怎么回事。

* 建议买一个iPhone或者iPad,或许你再也不想用Android手机或者平板了。

【历史】如果觉得有些无聊,就去挖一挖历史上比较火的可能和Java相关技术,比如:* Applet,想想它比起html5+css3+javascript的缺点在哪里。

* AWT、Swing,想想为什么很少有人用Java写图形界面程序。你觉得Swing的程序看上去舒服吗?中国人和残疾人喜欢用Swing程序吗?

* JNDI,想想它比起Spring Bean Container的缺点在哪里。

* JSP,想想它比起MVC结构的缺点在哪里。

* WSDL/SOAP,把它们和XML-RPC、RESTful Web Service比较一下。

* XSLT,以及为什么它是图灵完备的。可是它真的比Java本身更好用吗?

* Log4j、java.util.logging、Apache Commons Logging,各自有什么问题,以及Log4j的作者本人为什么又开发了SLF4j和Logback?

* Java最早是为什么设计的?

篇3:java工程师路线

软件工程专业的培养目标是:要求学生具备计算机软件基础理论、基本知识和基本技能,用软件工程思想、方法和技术分析、设计和实现计算机软件系统的能力[1-2]。笔者学校软件工程专业以Java为核心,围绕Java开设相关的学科平台课程、专业平台课程和专业实践课程,目的是培养具有软件开发应用能力的软件专业技术人才和大型软件管理人才。

1软件工程专业Java系列课程设置

笔者学校计算机软件工程专业平台课程中Java课程群包括:《Java编程基础》、《Java Web应用级开发》、《Java企业级应用开发》、《Java编程基础课程设计》和《Java综合课程设计》。与其相关的平台必修课程和实践课主要分3类:第一类为先修课,《程序设计基础》(基于C语言)、《程序设计实践》(基于C语言)、《面向对象程序设计》(基于C ++)和《面向对象编程课程设计》(基于C++);第二类为数据库,《数据库系统原理及应用》和《数据库应用系统课程设计》;第三类为软件管理课程,《软件工程概论》、《软件设计》、《软件测试》和《软件体系结构》。这些课程开设的学期和课时如表1所示。

2 Java系列课程教学存在的问题

学生普遍反映的问题有:1编程类课程总是在编写没有价值的增、删、改、查代码;2软件管理课程学到的知识无用武之地。教师反映的问题有:学生在编程时眼高手低;编写出的程序和系统存在的bug太多,没有实用价值; 在课程设计和最后的毕业设计中,缺乏整体的软件工程开发思想[3-4],没有达到预期的教学效果。究其原因是课程衔接不好。

通常每位教师在课程体系中只承担1门或2门课程。 教师在讲授时,都根据自己的思路,选择教材和教学案例, 将教学内容贯穿,根据教学知识点对案例进行分析、设计和开发。而在后续课程中,因教师不同,会选择新的案例讲授。例如,在《Java编程基础》中,选用“学生信息管理” 案例,在《Java Web应用开发》中选择 “网上书店管理系统”案例,在《Java企业级应用开发》中选择“学生选课管理系统”案例,在《数据库应用原理及应用》中,可能选择“图书管理系统”案例。单独的一门课程教学中,教师讲授的知识点和学生掌握的知识都符合培养方向和教学大纲要求,但学生仅仅学习了语言的语法规则,编写了简单的增、 删、改、查代码[5],缺乏软件工程综合开发能力的培养。

3教学改革

3.1选订系列教材

同一门课程的教材多种多样,大学教材的价值仅仅是教师讲课和学生学习时的第一参考书,教师讲授时根据教学内容可进行补充和删减。学生通常会根据指定的教材进行预习和复习,作为获取知识的第一依据。系列教材讲授的内容和选取的案列通常有一定的关联。因此,选定系列教材有助于学生对连贯性知识的掌握。

3.2案例选取

在Java系列课程学习过程中,学生充当整个系统开发过程中的所有角色。学生不仅是系统设计者,也是系统的开发者和测试者。因此,为了使学生编写的系统具有一定的实用性,不是相关语法增、删、改、查的简单验证,选取教学案例和实验案例应该符合以下两个要素:

(1)选择学生熟悉的实用案例。每个大学生都有在图书馆借阅图书的经历,通过人工和自助借书可以了解图书馆管理业务。借阅流程:借阅者获取借阅资格,根据借阅规则借阅图书;违反借阅规则,接受图书馆的惩罚。因此, 将图书馆管理系统开发过程引入教学,学生熟悉使用过程,对该系统的学习及开发会很快进入角色。

(2)案例具有可延续性,能够贯穿Java系列课程中所有的软件开发和软件管理课程。以可延续案例图书馆管理系统为例,Java系列理论课堂中的教学内容和教学目标如表2所示。

实验课和相应的课程设计,同样采用可延续的案例。 例如,在《Java编程基础》中开发单机版的学生管理系统, 通过后续的软件开发和软件管理课程实践,开发出基于J2EE架构的学生管理系统。在该案例开发过程中,形成规范的软件需求规格说明书、设计说明书、测试用例和用户手册。可延续案例在Java系列实践课堂中的设置如表3所示。

3.3定期开展教研活动

为了使可延续性案例在教学过程中有效执行,需要课程组教师定期交流和沟通,以明确所承担课程的教学内容,搞好课程之间的衔接,提高教学效果。每年春季学期,对大二学生(第四学期)同时开设《Java编程基础》和《软件工程概论》课程,对大三学生(第六学期)开设《Java企业级应用开发》课程。由于可延续案例的设置,三门课程根据其课程大纲,针对同一个 “图书馆管理系统”进行讲授。 通过开展教研活动交流,使《Java编程基础》和《软件工程概论》课程内容更加紧密,相辅相成。

每年冬季学期,对大三学生开设《Java Web应用级开放》、《软件设计》和《软件测试》课程。这个时期的学生具有一定的编程基础,对编写代码有强烈的成就感,但忽略了系统开发过程中的软件管理知识,设计的系统由于缺乏足够的需求分析和软件测试,没有任何使用价值。因此, 此学期的教研活动,应结合基于Web的图书馆管理系统开发,研讨规范的软件开发过程,提高学生的软件项目分析能力、设计能力和测试能力。

3.4学生定期座谈

定期开展同年级和跨年级的学生座谈会,了解学生对课程的掌握情况,发现教学过程中存在的不足。高年级学生向低年级的学生传授学习经验。开展毕业生就业经验座谈,通过毕业生找工作的亲身经历,了解社会对软件工程专业学生的需求情况。

4结语

Java课程体系是一套相互关联的知识迭代课程体系, 通过可延续性案例在Java课程体系中的设置,使学生在具备计算机软件基础理论、基本知识和基本技能的基础上,运用软件工程思想、方法和技术来分析、设计和实现具有使用价值的计算机软件系统。通过座谈会形式,及时了解学生对课程的掌握情况,完善教学大纲和教学内容。

参考文献

[1]喻晓.应用型本科面向培养软件工程师的Java课程群教学研究[J].计算机教学与教育信息化,2014(7):4518-4520.

[2]邓丹君.面向软件工程师岗位的JavaEE课程体系改革方案[J].软件导刊,2014(9):165-166.

[3]段丽英.基于软件工程专业课程群组建设的Java实训体系改革实践索[J].现代企业教育,2011(11):34-35.

[4]王岩,黄岚,杜伟.Java课程教学体系构建探索[J].计算机教育,2013(9):83-86.

篇4:java工程师路线

关键词:Java;CDIO;教学方法;教学实践

作者简介:李瑞生(1976-),男,甘肃白银人,甘肃政法学院公安技术学院,讲师;王秋云(1963-),女,甘肃兰州人,甘肃政法学院公安技术学院,教授。(甘肃兰州730070)

中图分类号:G642.0     文献标识码:A     文章编号:1007-0079(2012)10-0094-02

CDIO先进教育思想是麻省理工学院和瑞典皇家工学院等四所大学经过四年的探索形成的研究成果,国外和国内部分高校近年来先后将CDIO思想应用于教育教学实践并取得了良好的应用效果。[1]

CDIO即“构思—设计—实现—运作”的工程教育思想。其中包含12条重要的标准,[1-2]概括起來主要包括:教学中能否最大程度上体现和反映对软件开发的构思、设计、实施和运作的背景;在课程标准的制定上能否体现出对学生工程基础知识、个人能力、人际团队能力和工程系统能力的培养;培养计划是否包含不同能力层次的划分和实施;有没有保证CDIO培养模式开展和实施的工程实践场所;有没有将学科学习和工程职业训练融合在一起的综合性学习经历和主动学习经历;有没有具备实施CDIO思想的高素质师资;学生学习方式是否转变为主动学习和具备持续学习能力;对学生的考核和评价体系是否与CDIO的培养目标一致等。

针对计算机专业学生学习了“Java程序设计”课程后,独立分析和解决实际应用问题能力、团队协作、实际应用开发能力以及就业竞争力不强等问题,将CDIO思想引入到Java教学中,并对CDIO思想在Java教学过程中的应用和实践展开论述。

一、Java课程体系规划和实施

1.基于应用实践能力培养的Java课程体系规划

聘请有能力的软件开发企业中资深的Java项目人才与学校一起根据企业的需求制定人才培养方案和教学大纲,一方面及时了解前沿技术的变化,另一方面及时了解企业对用人需求的变化,根据这些变化及时调整课程体系并选择相关案例,满足企业现在和将来的用人需求。[3]

为了适应社会对高级Java EE、Java ME程序设计人才的迫切需求,必须设置合理的课程体系模块,体现完整的Java程序员的技术路线,在授课中时时处处体现实际应用需求,以进行实际应用项目开发为最终教学目的,将实际应用开发的环节、技术和知识点分布和渗透到课堂教学中。

因此,将“Java程序设计”课程体系划分为如图1所示,即在学习了Java SE程序设计后,针对不同的学生兴趣和不同的就业取向,开设Java EE或Java ME。

2.理论与实践教学环节的“阶段式”实施

以Java EE教学为例,按表1规划教学“知识点”、“知识单元”、“应用案例”及达到的“目标层次”。

按照如图2所示的学习情境创建—引入学习任务—讲授与互动的方法完成理论环节的教学任务。

传统的实验教学方式主要是教师针对课堂理论教学中的一个知识点的验证性实验。[4]这样进行的实验会导致以下问题:学生只练习了孤立的知识点,没有建立起知识点之间的联系,没有树立“所学知识是为开发应用项目服务的观念”;在完成试验后,不能体会和理解这些知识点如何运用到实际项目中;没有实际问题的驱动,学生缺乏对实验的兴趣、积极性和主动性。

因此,针对理论教学知识点和实际应用项目开发需求,以实际应用项目为出发点,将其分解为若干应用模块,每个模块相对独立构成一次实验教学内容,最后将单独的模块集成为完整系统的思路精心设计实验项目,引导和培养学生独立地、逐步地进入实际应用开发的殿堂。

将实践教学环节渗透到学生的整个培养计划的各个阶段,如图3所示。

二、培养学生实际应用项目开发能力的场所

1.创新实验室及专业实践基地的建设与运作

近年来,甘肃政法学院创办了计算机专业创新实验室,为保障CDIO工程教育思想在计算机专业教学中的贯彻实施提供了场所和仪器设备保障。创新实验室中Java项目开发团队在指导教师的带领下,由学生组成若干个开发小组,严格按照对实际应用项目“构思—设计—实现—运作”的思路,结合软件工程的开发流程,承揽和完成了一系列来自于校内或社会的实际项目开发。这部分从事过实际项目开发的学生毕业后,分别就职于全国各大中小城市以及地方的软件开发公司,跟踪调查显示,他们在各自的岗位上业务能力强,实践创新能力突出,得到用人单位的广泛认可。

为了方便交流和学习,建立了Java编程爱好者网站,以师生共建的方式提供大量的可共享的Java技术学习资料,形成师生共同探讨Java技术、互相推介Java最新技术和开发技巧的网络平台;邀请与学校有校企合作关系的Java工程师、已经从事Java相关开发工作的毕业生在其上开辟空间,给在校学习Java的学生提供一线开发的经验和技术支持。

为了调动学生对Java技术的兴趣,组建了Java编程爱好者社团,让学生共同学习、共同实践、共同提高。对于其中表现突出者,让其加入创新实验室参与实际应用项目的开发。形成高年级学生对低年级“传、帮、带”的传统,不断吸收新同学参与其中,保持社团旺盛的生命力。

2.让学生在实际应用项目开发中学习

CDIO工程化教育思想以工程项目从研发到运行的生命周期为载体,让学生以主动的、实践的、课程之间有机联系的方式学习工程。[2]因此,布置给学生的每个阶段的任务,如实验任务、课程设计任务、学年设计任务、毕业设计任务等,都以实际应用项目为背景,以软件工程方法中软件开发生命周期为指导,以提高学生自身应用开发能力、团队协作能力和工程能力为根本,锻炼学生主动学习,勇于实践,善于创新的良好习惯和开发实际软件应用项目的能力。

由主讲Java课程的教师团队牵头,走出学校,积极承接实际应用软件开发项目,组织学生开发团队进行实际软件项目开发。

积极与各软件开发企业保持长期合作机制,给学生创建稳定的Java实习基地,让学生走出去并深入到软件开发企业中进行项目实战的锻炼。

三、师资力量的强化

为了能够真正将CDIO思想贯彻落实在Java教学中,Java教师应同时具备Java软件工程师的能力。但目前由于主客观条件的限制,讲授“Java程序设计”的高校教师中,仍普遍存在着没有经过系统的项目开发培训和没有从事过完整大型项目开发经验积累的现象。

为了有利于“双师型”教师的培养,学校应鼓励教师走出去,从事软件工程师资质认证、项目开发培训和实战,并将这些经历纳入教师绩效考核和评定的条件。

加强校企合作,聘任软件开发企业中资深的Java项目工程师兼任技术顾问,对学生实际应用项目开发提供技术指导和评估。

四、学生学习方式的转变

Java教学的最终目的在于培养学生具备独立分析实际问题并运用Java开发技术创造性解决问题的能力。因此,让学生真正体现学生主体地位,将被动学习和无兴趣学习转变为主动学习和积极学习非常重要。

在Java教学中涉及的每个知识点、知识单元、项目案例都要以问题的形式呈现给学生,让学生意识到需要解决什么问题,让他们先考虑解决办法,再启发式地引导学生学习陌生的新知识和新方法。

引进企业的真实项目案例,采用多个小案例来驱动,先以需求和案例作为切入点,学生才有前进的目标,才会为这个目标奋斗,从而充分发挥学生的学习主动性。

五、改革学生课程考核方式

考核方式由单一的笔试或机试转变为以完成实际课程设计或应用开发项目的方式;采用“学生自评+学生互评+教师评价”等环节对学生的成绩进行综合评价;以“用户评价+专家鉴定”来综合考量实际运用项目的质量。

六、提高学生就业竞争力

通过系统化的基于CDIO思想培养的学生,已经在日常学习过程中潜移默化地掌握了Java实际应用项目开发的流程并积累了一定的项目经验。可将自己平时完成的完整项目保留下来,在就业面试阶段展示给用人单位。这锻炼了学生实际应用项目开发能力,使其快速进入Java软件工程师角色。

七、结语

在“Java程序设计”教学中,深入体现和贯彻CDIO从“做中学”,以实际应用项目开发为背景,以社会对Java人才需求为导向,以培养学生实际应用项目开发的能力为目标的新教学体系和方法,有利于进一步提高教学质量,促进学生实际应用项目开发的综合能力。

参考文献:

[1]cdio百度百科[EB/OL].http://baike.baidu.com/view/2402813.htm.

[2]马晓梅,张剑飞,乔付.CDIO模式下高等工程教育的改革与探索[J].计算机教育,2010,(12):132-133.

[3]唐振明,徐建民,蒋唯游,等.CDIO 工程教育模式在校企合作中的实践[J].计算机教育,2010,(11):42.

[4]李善寿.“CDIO”工程教学模式在实践教学中的实施方法研究[J].重庆科技学院学报(社会科学版),2010,(20):164.

(责任编辑:孙晴)

篇5:2018Java学习路线图

3.Eclipse开发环境搭建

二、Java基础语法,学习获取数据、计算数据、控制数据计算流程 1.Java运行原理

2.变量声明、数据类型、运算符、表达式 3.分支流程控制、循环流程控制 4.数组、排序算法、基础算法

三、Java OOP,学习如何利用面向对象代码封装组件,搭建简单的软件项目 1.对象、类、属性

2.构造方法、重载、继承、重写 3.封装、多态、抽象、内部类 4.对象数组、数组扩容与缩容 5.内存管理策略、内存溢出

四、Java SE,学习Java API解析HTTP协议 1.Object、String类型API 2.File文件系统操作 3.IO流、Socket编程 4.异步处理

五、Java SE深入学习,基于线程池的HTTP并发处理 1.集合框架、包装类 2.反射技术、多线程编程 3.线程池、阻塞队列 4.HTTP协议 5.XML解析

六、Java 8新特性 1.Lambda表达式 2.Functional接口 3.Time API

七、HTML/SCC 1.HTML标签学习

2.CSS选择器、CSS属性、CSS盒子模型 3.DIV/CSS布局

八、JS/jQuery

1.String的使用及API

2.正则表达式的定义和使用 3.常用内置对象 4.错误处理 5.Function与匿名函数 6.Object对象与对象模板 7.BOM、DOM 8.jQuery原理 9.jQuery选择器 10.jQuery事件 11.jQuery动画

九、MySQL

1.MySQL环境搭建 2.增、删、改、查

3.视图、存储、设计范式 4.MySQL维护技术

十、JDBC 1.JDBC标准 2.JDBC驱动 3.JDBC事务 4.JDBC连接池

篇6:java工程师路线

第一阶段(以Tetris项目贯穿)

掌握常见的数据结构和实用算法;培养良好的企业级编程习惯。

掌握面向对象的基本原则以及在编程实践中的意义;掌握Java面向对象编程基本实现原理。Java语言基础

算法基础、常用数据结构、企业编程规范。

Java面向对象

面向对象特性:封装、继承、多态等,面向对象程序设计,基础设计模式等。

实训项目一:Tetris项目开发 第二阶段(以T-DMS V1项目贯穿)

熟练掌握JDK核心API编程技术;理解API设计原则;具备熟练的阅读API文档的能力;为后续的课程学习打下坚实的语言基础。

熟练掌握JavaSE核心内容,特别是IO和多线程;初步具备面向对象设计和编程的能力;掌握基本的JVM优化策略。JDK核心API

语言核心包、异常处理、常用工具包、集合框架。

JavaSE核心

异常处理、多线程基础、IO系统、网络编程、Java反射机制、JVM性能调优(JVM内存结构剖析、GC分析及调优、JVM内存参数优化)、Java泛型、JDK新特性

实训项目二:T-DMS V1项目开发 第三阶段(以T-DMS V2项目贯穿)

熟练的掌握SQL语句;掌握一定的数据库查询技巧及SQL语句优化技巧。SQL语言

SQL语句基础和提高、SQL语句调优。Oracle数据库

Oracle体系结构及系统管理、Oracle数据库高级编程、数据库设计基础。

JDBC核心API(Connection、Statement、ResultSet)、JDBC优化技术(缓存技术、批处理技术、连接池技术)。

XML语法、XML解析(SAX、DOM)、Dom4j组件、Digester组件。

掌握Oracle体系结

构及核心编程技术

JDBC

理解JDBC作为规范的设计原则;熟练掌握JDBC API;具备使用JDBC对数据库进行高效访问的能力。

XML

熟练掌握XML语法规则;理解DOM模型;熟悉Java对XML的各种解析方式。

实训项目三:T-DMS V2项目开发

第四阶段(以T-NetCTOSS电信计费系统贯穿)

TML基本文档结构、掌握CSS基础语法、关于HTML文档块、链接、列表、表格、表单等

掌握HTML基本原理;掌握CSS各种选择器及常见样式设置;熟练使用HTML常用元素。

深入理解

JavaScript语言原理;熟练的使用

JavaScript对HTML DOM进行编程;熟练掌握JavaScript对象对象封装技巧,为后续的JavaScript学习打下坚实的基础。

透彻理解Servlet核心原理;熟练掌握Servlet API;透彻理解JSP引擎工作原HTML/CSS

JavaScript核心

JavaScript语言基础(数据类型、函数、对象、闭包)、Java DOM编程、事件模型、JavaScript面向对象编程。

Servlet/JSP

Servlet生命周期及Servlet服务器、Tomcat部署配置、JSP语法、自定义标记、JSTL和EL表达式、JSP 新特性、Java Web 设计模式。

理;透彻理解标记库原理;熟悉常见的Java Web设计模式;为后续的Java Web开发打下坚实的理论基础。

掌握Ajax的基本通信原理;掌握基于XML和JSON的Ajax数据规则。

掌握JQuery核心API;了解JQuery基本设计原则;了解多种JQuery插件;掌握DWR的基本原理及应用技巧。

熟练掌握Struts2核心要件,特别是Interceptor和

Result;掌握基于模板技术的Struts2 UI组件;掌握基于Ognl的数据共享方式、掌握Struts2各种定制及扩展方式;熟练掌握基于

Struts2的Web开发技巧。Ajax

Ajax基础、XHR对象、Ajax设计模式、JSON技术。

JavaScript框架

JQuery、JQuery插件、ExtJS

Struts2

Struts2核心控制流程、Ognl、Action、Interceptor、Result、FreeMarker、Struts2标记库、Struts2扩展、Struts2应用技巧(输入验证、消息国际化、文件上传和下载、防止重复提交等)。

实训项目四:T-NetCTOSS电信计费系统项目开发 第五阶段(“爱逛网”电子商务平台作为贯穿项目)

Linux高级命令集脚本编程、远程登录、Ant、单元测试技术、Maven构建技术、SVN应用技术。

熟练掌握基于Linux系统的操作技能;可以熟练的完成应用的部署工作;可以熟练的使用开发部署工具。企业应用开发部署环境 Struts2

Struts2核心控制流程、Ognl、Action、Interceptor、Result、FreeMarker、Struts2标记库、Struts2扩展、Struts2应用技巧(输入验证、消息国际化、文件上传和下载、防止重复提交等)。

熟练掌握Struts2核心要件,特别是Interceptor和

Result;掌握基于模板技术的Struts2 UI组件;掌握基于Ognl的数据共享方式、掌握Struts2各种定制及扩展方式;熟练掌握基于

Struts2的Web开发技巧。

重点掌握Hibernate多种关联映射技巧及其实用背景,做到在合适的时候使用合适的关联方式;掌握多种Hibernate查询技巧及优化技术。掌握MyBatis基本原理,SQL映射技巧、缓存机制等; 根据实际情况选择不同的持久层框架; 持久层框架技术

ORM概念、Hibernate核心API、Hibernate实体映射技术、Hibernate关系映射技巧、HQL查询、OSCache及Hibernate缓存技术; MyBatis基本原理,SQL映射技巧、缓存机制、高级使用技巧等。

Spring技术

Spring Ioc基础、Ioc注入技巧、对象高级装配(自动装配、模板装配、组件扫描特性、FactoryBean、对象生命周期)、Spring AOP原理、AspectJ、Spring JDBC支持、Spring事务及安全管理;Spring整合Hibernate、Spring整合Struts,SpringMVC技术。

深入理解Ioc和AOP的基本原理和实现方式;熟练掌握SpringIoc及AOP实现方式;熟练掌握Spring事务管理;熟练掌握Spring与其他组件的整合技术。•

实训项目五“爱逛网”电子商务平台开发

第六阶段(“爱逛网”电商后端数据平台作为贯穿项目)Hadoop

集群安装及原理;hdfs命令行操作;Java操作hdfs的常用API接口;动态添加删除数据节点。集群安装及原理;Hbase命令行操作;Java操作Hbase的常用API接口

MapReduce开发;Flume抽取日志;Hive安装及命令行操作及JDBC操作;通过Sqoop进行Hive和 MySQL之间的数据交换;MaHout入门;分布式集群管理zookeeper集群安装及原理及Java常用操作接口。Kafka集群安装及原理;Kafka常用java接口API;远程RPC方案Thrift;开源ETL工具Kettle。基于Lucene查找Hbase中的数据;基于Redis缓存数据提升平台性能。

系统需求获取及平台架构设计;数据存储底层搭建以及与WEB对接;提升用户体验;通过数据分析发觉用户需求 HBase

Hadoop高级

大数据交换

大数据查询

上一篇:总调值班汇报制度下一篇:杨雪峰同志事迹