java程序员职业规划

2024-09-28

java程序员职业规划(精选12篇)

java程序员职业规划 篇1

《Java语言基础》是我院与中兴公司共同创办的校企合作课程, Java语言具有的高可靠性、平台无关性性、网络性等优良特性受到了软件行业的追捧, 同时成为软件专业的专业核心课程。

以前我院以专业为导向, 章节式教学内容难以满足职业教学的需求。普遍存在学生学习兴趣不高, 因为没有明确的职业目标, 而教学内容是由知识点堆积而成, 学生的学习过程非常的枯燥。而部分同学在掌握了Java知识点之后, 很少能够在实际项目中灵活使用。所以我院在与中兴公司合作之后, 根据中兴公司提供的就业岗位为课程导向, 重新规划了本课程活动应该掌握的知识技能, 以实际工程项目为教学载体开展教学活动。

2 教学内容的选取

本课程根据中兴公司为我院软件专业的学生提供的软件开发、软件测试、软件维护等工作岗位的知识技能需求, 并依据软件开发的一般流程, 确定《Java语言基础》课程的教学内容包括系统架构分析、信息模块的实现以及数据层实现和系统完善这样三个学习情境。

三个学习情境对应软件开发流程中的不同开发阶段, 通过整个开发过程掌握相关职业岗位的知识技能的储备。

针对不同学习情境分配要实现的工作任务, 分配不同的课时量。分配情况如下图所示。

3 教学方法改革

本课程的教学实施过程是采用六步法实施教学, 分别为资讯、决策、计划、实施、检查、评估这六个过程。例如情境2中的任务4“客户群的处理”。首先先提出教学任务, 如何实现客户群的录入、查询、修改、删除等功能呢?怎么从之前的单一对象变成多个对象对本系统的不同操作呢?学生们提出自己的设计或想法后, 由教师进行分析和总结, 对设计的合理性进行推敲和分析, 并提供决策依据, 对其设计所涉及的知识点进行定位——类集。再详细分析和阐述类集中常用类的使用方法和不同的使用后果。然后学生们再重新综合利用教师讲授的知识点用于本环节的设计, 进一步完善“银行资金管理”系统。在实施完后, 由教师检查, 调整, 再评估。

通过六步法实施教学, 同学们的主观能动性被充分提高, 有了学习的兴趣。知道为什么要学习这门课程, 这门课程可以用来做什么, 哪些是课程的重点。在项目实施过程中, 由于需要同学们自己去设计、实施、调试、以及维护, 充分锻炼了他们动手能力, 针对软件测试、软件开发、系统架构分析师等岗位有了基本了解, 培养了他们的岗位职业素养。

但是单纯的六步法使得他们掌握的知识点运用固化。所以我们在课堂采用多种教学方式。包括补充了案例式教学法, 在阐述类集的时候, 我们对类集常用的几个类都进行了分析, 并用案例进行描述和剖析。加深他们的了解以及对知识点的灵活运用。在课堂上, 教师尽量不用灌输式的教学方式, 而是换成启发式或者讨论法实施教学过程, 这种方式能够更好的活跃课堂气氛。

4 总结

所有的教学都应该是以就业为导向的, 包括Java也一样。必须符合岗位的职业需求, 与社会紧密结合。同时这也要求教师不断的更新自身的知识技能, 在教学过程中不断反省、思考、尝试和探索。只有自身知识储备充分的情况下, 运用多种教学方法, 才能调动学生的学习兴趣, 才能的调动同学们的学习能动性, 储备他们的知识技能和职业素养的培育。

摘要:《Java语言基础》这门课程是我院与企业合作创办的校企合作课程, 课程案例使用企业提供的真实案例, 根据企业实际软件开发流程将课程案例进行剖析, 以三个工作情境展开教学内容, 将教学知识点融入案例中, 使得学生能够更好接受相关知识点。

Java程序混淆技术综述 篇2

关键词:Java程序;混淆技术;软件水印;防篡改;软件版权保护

中图分类号:TP311.52 文献标识码:A 文章编号:1007-9599 (2012) 09-0000-02

人们对于计算机的依赖性随着软件技术的不断给人们带来便利和乐趣,使工作更富有主动性和操作性,但是任何事物在发展过程中都会有其负面效应与之相对,随着计算机软件应用量和种类的不断扩展,其使用安全问题便开始影响到人们的正确使用,并开始逐渐打击使用计算机的积极性,以及对于安全问题的无奈。主要攻击形式是通过对软件备份的破坏而直接将软件彻底摧毁,根据现有问题,当前的软件已经经过改良,重新调试,但是攻击则换角度也将攻击破解方式进行重组,使改良的部分无法发挥其作用,这样软件就不会得到应有的保护,依旧能够以非正规途径得到软件的任何数据,从而进行大面积的传播,这也就是为何当今软件盗版现象严重的途径之一。Java程序的出现,首先能够在网络上加快传播速度并且无客观條件可以轻松普及,但同时却能够通过无关性对产权进行有效的保护,不会轻易的被人盗用。

一、软件混淆技术基本原理

(一)基本释义

软件混淆技术是为了能够在软件受到侵害或是盗用时可以被保护的一种现代技术,软件技术首先咋1977年新西兰首次被提出,其实是将原有的程序的语言转换成一种密码语言,不能被一般的软件所识破的一种转换,并且研制出能够对这种转换进行评估的理论计算。转换的形式未变,只是在形式上保留原有的运行根组成,添加一些其他能够扰乱破坏和读取的程序代码。如今混淆技术开始不断的发展,诸多的被应用于产权的保护中,所谓的混淆就是通过语词的转变但保持其语义依然与之前相同,这就能保证软件在使用时功能是不变的,却能够防止逆向工程攻击和被静态分析。

(二)软件混淆技术的分类

当Java文件经过处理,在原有的基础上添加了其他程序代码成为类文件,这种类文件包括魔数( magic number) 、版本( version) 、常量池( constant pool ) 、访问标识( access flag s) 、(this)类、(super)类、接口( interfaces) 、域( fields) 、方法(methods) 和属性(attributes) 。

软件混淆主要通过类内混淆和类间混淆来根据不同的使用对象进行划分,类内混淆主要是克服(methods)中的code字段,而类间混淆却是针对多种类文件的综合体进行混淆处理,其主要的方式是合并和拆分相对的过程处理。

下面分别介绍两种混淆。

(1)、类内混淆

能够支持类内混淆的途径有数据混淆、控制混淆、切片混淆以及针对特定工具混淆四种。数据混淆是对数据的结构组成元素原有的书写方式进行修改,使其不再成为能够被认知的程序。主要有:变量存储和编码混淆、变量聚合混淆、顺序调整混淆、词法混淆以及移除注释和调试信息混淆。控制混淆是在信息传输过程中的保护,主要采取追踪定位等方式实时监测信息的状态,从而对其他袭击系统进行抵御。切片混淆,正常在一般的软件中问了能够让计算机更好的识读软件,所以增加了切片以帮助更好的理解,降低难度,而混淆了切片则能够使其首先无法有助于难度的下降,另外会造成对于程序的误导可能降低了或是更改了某些其他的程序,达到了增加难度混淆的目的。针对特定工具混淆软件为了能够起到保护作用,本身具有一定的反编译和反混淆的功能,会在一定的紧急时刻自动启动,而针对特定工具就是抑制了自动的传导,对于能够使软件本身内部之间的反编译都可以正常的进行,但是对于外部的反编译就不会在自动启动,这就是混淆的高级之处。相区别与前三者人的行为,针对特定工具混淆具有自动的功能针对的是自动化。如果能够与以上三种任意搭配就能够达到防住人机的共同目的。

(2)、类间混淆

类间混淆是合并拆分类文件而造成混淆的目的其中又有三种表现形式:类合并、类拆分、隐形类间混淆。类合并是要面对多个文件的自身组成的函数变量,通过将函数、变量的名称进行更改,注意在更改过程中一定不能同时出现两个或以上的名子,如果在合并中有参数同系统提示无法进行更改,则要为其中一个虚拟一个参数。另外如果合并文件中有继承关系的则需要在合并成功后加入一个布尔型的私有变量用于区分标识符相同的函数。类拆分则是观察现有的文件是否进行拆分,同时并作出相应的调整。对于结果是可拆分的类就是将A拆分为A1与A2,为了能够使A的要素都能够实现所以应该是A2处于继承A1关系。类型隐藏是通过接口来实现混淆,并且能够保证原文件并不需要改变接口,所以被称为隐形。相比类合并,类拆分和隐形类间混淆所用的时间相对较短。

二、软件混淆算法的攻击模式

(一)混淆算法的理论研究

混淆技术的提出者曾经试图将整个运行过程当做是一个虚拟黑箱来看,也就是说对于其他程序来说这就完全是另外一个软件和原软件无任何联系,从它的输入和输出的方式内容和代码都不同,这种在理论中是可以站的住的,但是在实际操作中会受到很多因素的限制,但在相对宽松的要求下还是可以实现混淆技术的使用。后来又根据该理论研究通过点函数来实现虚拟黑箱,总而言之其未来的研究空间还有很大,期待它的日益成熟。

(二)混淆算法的攻击模式

1.针对数据混淆算法的攻击

假定T 是对程序P 的一个单向的混淆变换,当且仅当从原始程序P 除去某些信息后,无法通过混淆后的程序Pc恢复出P。词法变换是最典型的不可逆混淆算法。虽然对于经过词法变换的程序进行攻击不可能恢复程序的原貌,但只要理解程序各个模块的含义就可能对程序产生威胁。例如根据无法被混淆的系统API 名称等关键字,攻击者可以推测出该模块的大致功能。

2.针对控制流混淆算法的攻击

目前,针对控制流混淆算法的主要攻击方法是动态分析。动态分析对大部分混淆算法的攻击作用,并阐述攻击模型. 对于控制流混淆而言, 变换后生成的程序中若存在始终不执行的分支,通过动态分析就能找到对破解程序有用的信息.针对控制流混淆,还有黑盒测试攻击, 该方法通过对程序进行黑盒测试,了解各个类及其函数的功能, 从而获取攻击者需要的信息. 这种方法对大多数的混淆变换均能加以攻击。同时,该方法也存在着一定的局限性: 黑盒测试缺乏自动分析工具,需要依靠大量的人力来完成分析工作。

三、对于混淆技术的未来预估

混淆技术是一种可用于抵制逆向工程和重组工程、对软件知识产权进行保护的程序变换技术。使用混淆技术虽然会使代码的效率有一定程度的降低,但是它的实现代价相对较小, 因而在近年引起了广泛的关注.由于混淆技术不改变程序功能的特性, 并且有些词法混淆算法甚至可以减小原程序的体积, 因此混淆技术得以在保护移动代码方面得到广泛的应用. 受移动平台资源的限制,今后混淆技术的研究方向一方面要加大混淆的力度,增加攻击者反编译的难度,另一方面也要考虑降低混淆算法对目标程序的运行负担。文献探讨了混淆技术在移动代理上的应用。目前保护软件知识产权的新技术主要有3种:混淆技术、软件水印技术和防篡改技术。这3种技术各有特长,将它们互相结合使用,可以给予目标软件更为可靠的保护,这也是目前研究的一个重要方向。对于混淆算法的评估、正确性验证以及如何研制高效可靠的混淆算法, 也是将来的发展方向之一。

四、总结

混淆技术是对软件进行的基础产权保护,为了能够增加破译的难度和代价,从而使产权盗版的情况发生率降低,同时还能提高软件水银的鲁棒性,有人提出将程序的编译混淆, 而不是混淆程序本身。但是该方法还有若干问题需要考虑。使软件的安全度进一步提升,给人们的使用带来了更多的福音,虽然该技术已经广泛运用也颇收到好评,在技术上依旧有大的发展前景,需要投入更多的研究力量。

参考文献:

[1]霍建雷,范训礼,房鼎益.Java标识符重命名混淆算法及其实现[J].计算机工程,2010,第1期

[2]咸星海.面向对象代码混淆技术研究及软件实现[J].中国科技博览,2010,第19期

[3]刁俊峰.软件安全中的若干关键技术研究[D],北京:北京邮电大学,2007

[4]李新良,罗戈夕.基于Java的代码混淆算法研究[J].湖南文理学院学报:自然科学版,2010,第3期

[5]霍建雷,范训礼.房鼎益,Java标识符重命名混淆算法及其实现[J].计算机工程,2010,第1期

[6]李婧.基于控制流混淆轉换的代码保护技术[J].计算机安全,2009,第8期

[7]袁征,冯雁,温巧燕,张华.构造一种新的混淆Java程序的不透明谓词[J].北京邮电大学学报,2007,第6期

java程序员职业生涯规划 篇3

一位哲人说过:“走好每一步,就是你的人生。”,人生之路说长也长,是因为这是你一生所要走的艰难险阻的跋涉;人生之路说短也短,因为你度过的每一天就是你的人生。每个人都在计划自己的人生,都在实现自己的梦想,而我将在规划的航线上拔锚起航。

一、认识自我1、个人分析:

个人认为我的性格具有两面性,我喜欢在安静的环境下去看书,在有的时候与朋友聊天分享彼此的欢乐。也喜欢打羽毛球、跑步、旅游,享受大自然的美景、陶冶自己的情操。另外,我也具有团队合作精神与协作能力,比较强的动手能力与实践能力。

人无十全十美,我在做事情时,有时比较急躁,但我会在以后的工作与学习中加以改进自己的不足。

二、职业生涯条件分析

1、社会环境分析:

总体来说,我们国家面临着一个良好的社会的环境,社会安定,ZZ稳定,特别是当前经济发展迅速,法制建设不断完善,高新技术领域突飞猛进。因此,在这样一个良好的社会环境下,制定一个合理的人生职业规划是尤为必要的。

2、职业环境分析:

IT行业是随着电子信息产业的发展而逐步发展起来的,并且日益得到完善,IT行业的平稳增长必然会带来软件工程师需求的增长,目前随着IT产品出现的技术融合,市场需求的巨大和专业人才的缺乏,由此可知,软件行业还是比较乐观的。但软件行业需要的也是复合型人才,软件工程师需要掌握更多的编程语言。

三、职业目标定位

1、职业目标的确定:

1。1短期目标(1-2年):

注重Java基础知识、多学习项目开发经验,了解项目开发业务知识,并在学习中掌握DB2数据库的SQL语句的复杂查询以及管理操作,并深入学习了解struts、hibernate、spring相关操作。

1。2中期目标(3-5年):

至少了解并熟悉2门编程语言,如。net、C++、PHP;并学习掌握Oracle、MS-SQL数据库管理操作;掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。在有条件允许的情况下,会考虑专升本。

1。3长期目标(5-10年):

学习管理方面的相关知识,由技术型向管理型方面的转移。

2、成功标准:

只要自己尽心尽力,能力得到发挥,从实践中得到提升与自我认识,就是最大的收获。

四、评估调整

1、评估的时间

在一般情况下,每三个月对自己所做的工作进行一次总结,每半年对职业规划重新评估并进行相应的调整。

2、评估的内容与调整的原则

不论目标如何调整,每一时间段必须有明确的工作计划与目标,内容评估主要侧重于实施策略的评估和调整,随着社会以及行业的一些发展和变化,随时适时调整自己的目标实现策略,做到最简的规划最快的提高。

五、结束语

java程序员职业规划 篇4

大家好,最近总结了一下作为Java语言初学者,需要掌握的一些基本知识,和一个Java程序员所具备的基本素质,与大家共同分享,不足之处望大家多提宝贵意见。

1、Java概述

 1995年5月23日开始,原名为Oak,最先开始用于一个绿色项目开发(一次编译随处使用),后来更名为Java。

 09年SUN公司被Oracle收购,先后经历1.0、1.1、1.2、1.3、1.4、5、6、7、8等版本。 Java SE 标准开发

Java EE 企业级开发

Java ME 移动开发

2、JDK和JRE  JDK:Java Development Kit(Java开发工具集)

Java语言与JDK的关系:足球比赛与足球场

 JRE:Java Runtime Environment 如果客户要使用Java语言平台开发的软件,就必须安装JRE。

它包含:开发技术、用户界面工具箱、整合类库、基础类库和Java虚拟机  区别:JDK可以给开发者提供开发环境,也可以运行程序;JRE不能开发Java程序,只能运行Java程序,客户通常只安装JRE不安装JDK。 Java平台分为四个部分: 操作系统:Linux、Macintosh、Solaris、Windows,.etc 2 JVM(Java虚拟机)

虚拟的操作系统,不同的操作系统虚拟机也不同,它只能识别class文件.3 JDK(包含JRE、工具程序与API)4 Java语言

 几个专有名词解释:

JDBC:Java DataBase Connection(Java数据库连接):将数据库的数据展示到前台页面

JNDI:Java Naming Directory Interface(Java命名目录接口)RMI:Remot Method Invoke(远程方法调用):跨IP、跨进程的调用。

开发者向客户提供自己的ip、端口、方法名称,客户拿到了这些则可以远程访问开发者的服务,最终能够获取到想要的东西。rmi://10.7.210.616712/basketballInfo

3、JVM(了解)

 概述:Java Virtual Machine(Java虚拟机):可以通过Java虚拟机来实

磨砺营IT教育版权所有

http://

现跨平台。

我们可以把JVM看做操作系统,他只能运行.class文件

 不跨平台:在Windows系统开发的程序无法再其他操作系统上运行,不能实现跨平台。

HelloWorld 0101110 Windows操作系统

0101011 Solaris操作系统

 跨平台:一次编译,到处运行。好比一份用当地语言编写的文档(俄文),先翻译成英文,在由英文翻译成客户所在国家的语言

 JVM作用过程:源程序—(编译)—> 字节码(.class)—(JVM把字节码进行解释)—> 操作系统能理解的机器语言  了解两点: 他是一个操作系统,专门执行class文件 有了它才能够实现跨平台;不同的操作系统,它的虚拟机不一样。

4、写出第一个Java程序(重点)

 步骤:安装jdk配置环境变量(连接用户和操作系统)检查是否配置完成(win+R,输入cmd,输入java –version,能够显示Java版本信息说明安装成功)

 编程工具:记事本、写字板、EditPlus、Eclipse等。

输入javac命令:编译程序,使之创建一个.class文件(字节码)输入java命令:解释执行程序(执行jdk文件夹bin目录下的java.exe文件,即请求Java虚拟机来执行某字节码)

5、Java标识符命名规范(掌握)

定义:可以自定义的字符序列叫标识符

类名称也叫作标识符,类名称必须和Java源文件名称前缀保持一致。命名规范: 类名称首字母必须大写,如果有多个单词,每个单词首字母大写; HelloWorld 2 标识符可以使用大小写字母(一般全部用大写字母)开始,也可以使用$(美元符号)或_(下划线)开始; 命名遵循“见名知意”的规则; 命名遵循“驼峰命名法”的规则(即有多个单词时,每个单词首字母大写)。

磨砺营IT教育版权所有

http://

6、注释

单行注释://+内容(放在代码的上面一行)

//定义一个整数类型的变量,其名称为height int height; //给变量赋值:

//使用 =(赋值运算符)给变量赋值

//赋值运算符:将(赋值运算符)右边的数值赋给左边的变量 height = 173;

 多行注释/块注释:

注意:行注释只能写在方法里面,用来注释变量、分支、循环

多行注释用来注释类、方法、属性

7、变量(重点)

定义:驻留在内存中的一个存储单元(临时)如何使用变量来完成计算: 1 声明一个变量

语法: 数据类型 变量名;int height;2 给变量赋值

语法:

变量名 = 值;height = 173;3 声明变量和赋值可以放在一行,即:数据类型 变量名 = 值;int weight = 86;注意:变量使用之前,一定要为其赋初始值(初始化)。4 如何向控制台输出变量 System.out.println(height);System.out.println(height);

磨砺营IT教育版权所有

http:// 如何使用变量改变数值 weight = weight + 1;变量有哪些数据类型:

数据类型分为两大类:基本数据类型和引用数据类型。基本数据类型: 1 整数类型:

int(整形): 32bit或者4byte,最大值为2的31次方-1,最小值为负2的31次方

short(短整形): 16bit或者2byte,最大值为2的15次方-1,最小值为负2的15次方

long(长整形): 64bit或者8byte,最大值为2的63次方-1,最小值为负2的63次方

注意:所有整数的默认字面量(在编译器能够知道的数值)都为int类型,所以long类型的变量值需要在后面一定要加上一个“L”(可以用小写,但是规范一般用大写。)

byte(字节类型): 8bit或者1byte,最大值为2的7次方-1,最小值为负2的7次方

注意:定义整数尽量使用int类型,如果空间不够再使用long类型,不要使用short、byte来定义整数。小数类型:

float(单精度浮点型): 32bit或者4byte,科学计数法 float pi = 3.14F;注意:所有小数的默认字面量(在编译器能够知道的数值)都为double类型,所以float类型的变量值需要在后面一定要加上一个“F”(可以用小写,但是规范一般用大写。)

double(双精度浮点型):64bit或者8byte,科学计数法 注意:定义小数优先使用double类型,避免不必要的错误。3字符类型:

char(字符类型): bit16或者2byte,只能存储单个字符(2byte,也可以存储汉字或字母)

char sex = ‘男’;注意:只能存储单个字符,必须以单引号开始,单引号结束。

磨砺营IT教育版权所有

http:// 布尔类型:

boolean(布尔类型):只能存储两个值——true/false boolean bool = true;经常使用的数据类型有:int、long、double、bollean 几乎不用的数据类型有:short、float、char 很少用到的数据类型有:byte(第五周讲)变量的命名规范 变量名只能以大小写字母、下划线、美元符号开头,但是可以有大小写、下划线、美元符号、数字组成; 一般使用小写字母开头来定义变量; 如果有多个单词采用驼峰命名法,从第二个单词开始首字母大写; int tomAge = 18 4 变量名区别大小写; 变量名长度不受限制,但是一般变量名称长度不要超过15个字符。6 如果超过15个字符,去掉元音字母保留辅音字母

7、运算符

1、算数运算符

+-* / % 其中,%叫做取模运算符(取余数运算符)。21 / 5 = 4 21 % 5 = 1 在Java世界中,两个整数相除,结果必然是一个整数

2、赋值运算符

= :将运算符右边的数值赋给左边的变量 注意:右边的数值也可以是变量

3、  比较运算符 > < >= <= == 比较两个数值(是否相等)

磨砺营IT教育版权所有

http://

!= 不等于

比较运算符计算的结果一定是一个boolean数据类型 boolean calcResult = 3 > 5;System.out.println(calcResult);则输出false

4、++--放前面叫前向自增/自减:先计算再赋值 放后面叫后向自增/自减:先赋值再计算

int a = 3;int b = 2;int result =(a++)*(--b)+(--a)/(b ++);输出为3*1+3/1=6

5、逻辑运算符(重点)自增和自减(面试会考察)

逻辑运算符必须要配合boolean数据类型一起使用  && 与:

使用场景:

条件1 && 条件2 多个条件都为真则为真。1 int score1 = 80;int score2 = 90;boolean gift = score1 >80 && score2 >80;System.out.println(gift);2 int score1 = 80;int score2 = 90;boolean result1 = score1 >80;boolean result2 = score2 >80;boolean gift = result1 && restult2;

磨砺营IT教育版权所有

http://

System.out.println(gift);两个例子输入结果均为false。 || 或

使用场景:

条件1 || 条件2 多个条件有一个为真,则为真。!非

使用场景:!条件 非真为假,非假为真。

6、位运算符(重点)

特征:将两个整数转成二进制再针对每个bit位逐个进行上下比较的位运算  & 位与:上下结果都为1则结果是1,否则结果是0 10010 8 01010 10 00010 2  | 位或:上下只要有1个1结果就是1,否则是0 10010 8 01010 10 11010 26  ^ 位异或:上下相同为0,否则为1 10010 8 01010 10

磨砺营IT教育版权所有

http://

11000 24 拓展1: int有32位

00000000 00000000 00000000 00000010 最高位 次高位 次低位 最低位

第32位也叫作符号位,1代表负数,0代表正数。拓展2:

~ 取反 先+1再取反

int value = ~10 则得到-11 00001010 1110101

7、 位移运算符

<< 左位移:左位移多少位,就在最右边补多少个0 将10进制数2,左位移3位 2 << 3 00010则去掉前3位,在后面加3个0,变成了10000  >> 右位移:右位移多少位,就在最右边去掉多少个位

将10进制数17,左位移3位 17 >> 3 10001则去掉后3位,在前面加3个0,变成了00010

java程序员职业规划 篇5

相当程序员的朋友,必定有个高薪的梦,当下薪资比较高的程序员非Java程序员莫属,很多朋友已经开展Java的学习,已经走向把当Java程序员梦转变为现实之路,那么成为Java程序员需要多长时间?你有预测过吗?今天就跟广州兄弟连小编一起来探讨下答案吧。

成为一名Java程序员,首先要掌握Java程序员所需的Java技能,那么首先得看看学Java要多长时间?学Java一般是自学和培训,自学Java时间因人而定,Java培训一般是3-5个月,除去学Java的时间,Java成功学成后真的就能成为Java程序员吗?

没有那么容易的事,Java学成后一般还得经历一段Java实习生的阶段,刚进入Java职场你什么都不懂,就想被称为Java程序员是不是想象的太美好了,一般来说Java实习生要当多久呢?那么得看你的上手能力有多快,还得看你选择公司对你有多大的锻炼。

一般而言成为一个Java程序员要多久?1-2年初级Java程序员,成为一个初级Java程序员你自然不可以就此止步,还得不断保持求知欲,还得努力向更高级别的Java程序员发起进攻,你若成为Java架构师,那么在Java行业的确成就大大,钱途和前途皆在手。

java程序员职业规划 篇6

为加快我国教育改革进程,促进学生专业知识、外语水平及能力素质的全面发展,教育部大力提倡进行双语课程建设。为了响应教育部推行双语教学的要求,我校出台了双语课程建设政策,要求在专业课程中选择可以推行双语教学模式的课程。在计算机专业课程中,大家一致认为语言类课程比较适合开展双语教学,因此,我们决定以程序设计课程作为示范课程,来探索新的教学模式。

2 开展双语教学的可行性

在初步选择之后,我系教师对在Java程序设计中开展双语教学进行了研讨。主要讨论了影响双语教学的三个主要因素:学生接受能力、双语教学师资、课程特点。

2.1 学生接受能力

Java程序设计的授课对象为本科软件方向学生。从课程安排看来,外语课与专业课同步开设,注重听力和口语的练习,具有一定的程序设计语言基础。但学生基础水平差异成了我们最担心的问题。因此课下我随机抽取了部分学生进行座谈,了解学生对待新事物的心理状态,大多数学生持赞成态度。一部分英语基础较差的同学希望通过双语教学可以提高他们的英语应用能力。另外,也考虑了在教学中采用中英文对照的课件,以供不同基础的学生选择使用。

2.2 双语教学师资

排除了学生的因素,接下来讨论了对授课教师的要求。我系教师曾经担任计算机专业英语和Java程序设计课程的教学任务,具有良好的实践基础。因此,在本课程中开展双语教学具有适合的师资力量。

2.3 课程特点

并不是所有的专业课程都易于采用双语教学。学生未曾学过计算机专业英语,对专业术语掌握较少,此时若选择专业词汇多、抽象概念多、理论性强的课程,学生将无法承受。而程序设计类课程的专业词汇少,实践性强,抽象度低,程序就是书写代码进行规则应用,通过实践较易理解课程内容。大家一致认为,Java程序设计适合开展双语教学。

3 Java双语教学的实施

3.1 教材选择

3.1.1 原版英文教材

实施双语教学,教材的选择至关重要。本课程采用美国Harvey M.Deitel编著的Small Java How to Program,6/E原版教材进行授课,内容符合教学大纲要求的深度和广度。该教材与我院目前采用的中文教材对于知识点的设置和讲解十分类似,且简明清晰、论述层次分明,具有较强的逻辑性和较新的知识体系。

3.1.2 扩充性原版及翻译版参考资料

选择Java程序设计方面比较权威的其他原版书籍作为教学参考资料,且尽可能使用具有中英文对照的书籍。

(1)Bruce Eckel.Thinking In Java.北京:机械工业出版社,2007.

(2)(美)Bruce Eckel.陈昊鹏译.《Java编程思想》.北京:机械工业出版社,2007.

(3)(新加坡)潘祥春.Java Programming.北京:清华大学出版社,2010.

(4)Rogers Cadenhead,Laura Lemay.袁国忠,张劼译.《21天学通Java6》(第5版).北京:人民邮电出版社,2009.

(5)Rogers Cadenhead,Laura Lemay.Sams Teach Yourself Java 6 in 21 Days(5th Edition).America,Sams,2007.(电子版)

3.1.3 教材建设

双语教学是个新事物,现有的教材较少;单纯引入外来教材,又不符合目前的教学要求和学生的状况。针对这些问题,在教学中除了对不同水平的英文原版教材进行选择性使用之外,还利用本次双语教学的实践经验,编写了适合双语教学使用的实验指导书。

3.2 教学方法

根据教学内容和学生实际情况,在双语教学中进行多种教学方法的综合应用。

3.2.1 综合运用多种传统教学方法

讲授法、演示法、练习法、发问法、启发式教学法、讨论法、案例教学法等传统教学方法综合运用,讲解教学中的主要理论、重点和难点。在教学过程中,对一些重要知识点进行讲授和针对性练习;较易理解的知识点,则可以通过设置问题的方法启发学生思考并鼓励学生以自学形式完成;对于疑难问题,则可以通过激发学生讨论、进行案例应用演示的方法来突破难点。

3.2.2 双语教学的阶梯式教学法

对于大部分学生而言,英语基础较为薄弱,对使用英语进行教学产生畏惧和排斥心理。在教学过程中,针对学生的具体情况和双语教学的要求,灵活掌握中文和英文的使用比例,引导学生循序渐进的适应新的教学模式。

1)使用英文版课件,用中文讲授专业内容。

在双语教学的初级阶段,学生刚接触双语课程,不习惯教师用英文授课的方式。此时,在教学中使用英文来组织教学活动,而专业部分的讲授用中文为主英文为辅的方式进行。

2)中英文授课比例基本上各占50%。

随着学生排斥心理的消失,课堂上开始加大采用英文进行教学的比例,讲授过程中中文和英文交替使用,中文主要解释重要的概念和技能,使学生能够逐步适应英文进入课堂教学。

3)英文为主,中文解释为辅。

仅对部分难理解的内容辅以中文解释,让学生逐步习惯用英文来学习和思考。在练习和作业设置中,添加必须用英语回答的问题。

3.3 教学手段

3.3.1 利用多媒体进行课堂教学

本课程双语教学以利用现代多媒体教学课件授课为主,多种教学手段并用。在教学过程中,以英文原版书籍为教材和主要参考书籍,同时参考国内外多本优秀Java程序设计教科书,自行制作了一套中英文对照的《Java程序设计》多媒体教学课件,便于教师利用丰富的教学资料为学生授课,提高教学效率和课堂信息容量。

3.3.2 利用网络辅助教学

教师将课程资料通过网络传给学生,极大地方便了教师与学生之间的交流。在网络平台上,可以展示教师的教案、布置给学生的作业,便于学生能够及时地预习、复习和练习。同时,学生可以在网上向教师咨询和请教疑难问题,也可以与教师进行某些问题的讨论。

3.3.3 充分利用现代媒体辅助实验教学

为加强课程知识的实际应用,利用二分之一的课时进行实验教学。在实验课教学中,除利用多媒体进行实验演示外,还充分利用实验室的网络设备,加强对学生实验过程的指导作用。

3.4 教学考核和教学效果

本课程采用双语教学的重点是在学习专业知识的过程中不断提高学生的英语综合应用能力。因此,采用灵活多样的考核方法和形式。

考核方法可以采用期末考试、平时成绩进行综合考核;考核形式可以为课堂表现、作业及考试试卷;考试形式可以为开卷、闭卷。在教学实践中,采用“作业+课堂表现”相结合的考核方法;在课程结束时,采用试卷进行考核;在整个学期,根据课程内容分阶段进行开卷考试,了解学生学习状况,获取教学信息,以便指导教学更好地开展。

经过师生一学期的努力,双语教学取得了阶段性的胜利。学生综合实践的能力、期末考试的成绩均高于以往未进行双语教学的班级。调查问卷的结果也显示,双语教学对学生学习该课程起了促进作用。

4 结束语

Java程序设计双语教学取得了成绩,但也仍然存在很多亟待解决的问题,如:丰富网络教学资源,建立信息反馈平台,培养学生创新能力,及推动学生深入学习等。在本课程未来的建设规划中,我将着手完善双语教学体系,并推动双语教学在其他课程中的应用。

摘要:该文结合计算机专业双语教学的现状,分析了开展双语教学的可行性。从课程选择、可行性分析、教材选择、教学方法、教学手段和教学效果等方面,阐述了在Java程序设计中实施双语教学的实践过程。

关键词:Java程序设计,双语教学

参考文献

[1]胡庆江,杨瑞静.对搞好双语教学的探讨[J].北京教育:高教,2006(2).

[2]张同乐,程鹂.关于双语教学的再思考[J].安徽大学学报:哲学社会科学版,2006(1).

Java编程语言程序的认识误区 篇7

软件的生命性

软件是有生命的,这可能是老调重弹了,但是因为它事关分层架构,反复强调都不过分。

一个有生命的软件首先必须有一个灵活可扩展的基础架构,其次才是完整的功能。

目前,很多人对软件的思想焦点还是落在后者:完整的功能,觉得一个软件功能越完整越好,其实关键还是架构的灵活性,就是前者,基础架构好,功能添加只是时间和工作量问题,但是如果架构不好,功能再完整,也不可能包括未来所有功能,软件是有生命的,在未来成长时,更多功能需要加入,但是因为基础架构不灵活不能方便加入,死路一条。

正因为普通人对软件存在短视误区,对功能追求高于基础架构,很多吃了亏的老程序员就此离开软件行业,带走宝贵的失败经验,新的盲目的年轻程序员还是使用老的思维往前冲。其实很多国外免费开源框架如ofbiz compiere和slide也存在这方面陷阱,貌似非常符合胃口,其实类似国内那些几百元的盗版软件,扩展性以及持续发展性严重不足。

那么选择现在一些流行的框架如Hibernate、Spring/Jdonframework是否就表示基础架构打好了呢?其实还不尽然,关键还是取决于你如何使用这些框架来搭建你的业务系统。

存储过程和复杂SQL语句的陷阱

首先谈谈存储过程使用的误区,使用存储过程架构的人以为可以解决性能问题,其实它正是导致性能问题的罪魁祸首之一,打个比喻:如果一个人频临死亡,打一针可以让其延长半年,但是打了这针,其他所有医疗方案就全部失效,请问你会使用这种短视方案吗?

为什么这样说呢?如果存储过程都封装了业务过程,那么运行负载都集中在数据库端,要中间J2EE应用服务器干什么?要中间服务器的分布式计算和集群能力做什么?只能回到过去集中式数据库主机时代。现在软件都是面向互联网的,不象过去那样局限在一个小局域网,多用户并发访问量都是无法确定和衡量,依靠一台数据库主机显然是不能够承受这样恶劣的用户访问环境的。

从分层角度来看,现在三层架构:表现层、业务层和持久层,三个层次应该分割明显,职责分明,持久层职责持久化保存业务模型对象,业务层对持久层的调用只是帮助我们激活曾经委托其保管的对象。所以,不能因为持久层是保管者,我们就以其为核心围绕其编程,除了要求其归还模型对象外,还要求其做其复杂的业务组合。打个比喻:你在火车站将水果和盘子两个对象委托保管处保管,过了两天来取时,你还要求保管处将水果去皮切成块,放在盘子里,做成水果盘给你,合理吗?

上面是谈过分依赖持久层的一个现象,还有一个正好相反现象,持久层散发出来,开始挤占业务层,腐蚀业务层,整个业务层到处看见的是数据表的影子(包括数据表的字段),而不是业务对象。

当然适量使用存储过程,使用数据库优点也是允许的。按照Evans DDD理论,可以将SQL语句和存储过程作为规则Specification一部分。

Hibernate等ORM问题

现在使用Hibernate人也不少,但是他们发现Hibernate性能缓慢,所以寻求解决方案,其实并不是 Hibernate性能缓慢,而是我们使用方式发生错误:

“最近本人正搞一个项目,项目中我们用到了struts1.2+hibernate3,由于关系复杂表和表之间的关系很多,在很多地方把lazy都设置false,所以导致数据一加载很慢,而且查询一条数据更是非常的慢。”

Hibernate是一个基于对象模型持久化的技术,因此,关键是我们需要设计出高质量的对象模型,遵循DDD领域建模原则,减少降低关联,通过分层等有效办法处理关联。如果采取围绕数据表进行设计编程,加上表之间关系复杂(没有科学方法处理、侦察或减少这些关系),必然导致系统运行缓慢,其实同样问题也适用于当初对EJB的实体Bean的CMP抱怨上,实体Bean是Domain Model持久化,如果不首先设计Domain Model,而是设计数据表,和持久化工具设计目标背道而驰,能不出问题吗?关于这个问题N多年前就争论过。

这里同样延伸出另外一个问题:数据库设计问题,数据库是否需要在项目开始设计?

如果我们进行数据库设计,那么就产生了一系列问题:当我们使用Hibernate实现持久保存时,必须考虑事先设计好的数据库表结构以及他们的关系如何和业务对象实现映射,这实际上是非常难实现的,这也是很多人觉得使用ORM框架棘手根本原因所在。

当然,也有脑力相当发达的人可以实现,但是这种围绕数据库实现映射的结果必然扭曲业务对象,这类似于两个板块(数据表和业务对象)相撞,必然产生地震,地震的结果是两败俱伤,软的一方吃亏,业务对象是代码,相当于数据表结构,属于软的一方,最后导致业务对象变成数据传输对象DTO,DTO满天飞,性能和维护问题随之而来。

领域建模解决了上述众多不协调问题,特别是ORM痛苦使用问题,关于 ORM/Hibernate使用还是那句老话:如果你不掌握领域建模方法,那么就不要用Hibernate,对于这个层次的你:也许No ORM 更是一个简单之道。

Spring分层矛盾问题

Spring是以挑战EJB面貌出现,其本身拥有的强大组件定制功能是优点,但是存在实战的一些问题,Spring作为业务层框架,不支持业务层Session 功能。

具体举例如下:当我们实现购物车之类业务功能时,需要将购物场合保存到 Session中,由于业务层没有方便的Session支持,我们只得将购物车保存到 HttpSession,而HttpSession只有通过HttpRequest才能获得,再因为在Spring业务层容器中是无法访问到 HttpRequest这个对象的,所以,最后我们只能将“购物车保存到HttpSession”这个功能放在表现层中实现,而这个功能明显应该属于业务层功能,这就导致我们的Java项目层次混乱,维护性差。 违背了使用Spring和分层架构最初目的。

领域驱动设计DDD

现在回到我们讨论的重点上来,分层架构是我们使用Java的根本原因之一,域建模专家Eric Evans在他的“Domain Model Design”一书中开篇首先强调的是分层架构,整个DDD理论实际是告诉我们如何使用模型对象oo技术和分层架构来设计实现一个Java项目。

我们现在很多人知道Java项目基本有三层:表现层、业务层和持久层,当我们执着于讨论各层框架如何选择之时,实际上我们真正的项目开发工作还没有开始,就是我们选定了某种框架的组合(如Struts+Spring+Hibernate或Struts+EJB或Struts+ JdonFramework),我们还没有意识到业务层工作还需要大量工作,DDD提供了在业务层中再划分新的层次思想,如领域层和服务层,甚至再细分为作业层、能力层、策略层等等。通过层次细化方式达到复杂软件的松耦合。DDD提供了如何细分层次的方式

当我们将精力花费在架构技术层面的讨论和研究上时,我们可能忘记以何种依据选择这些架构技术?选择标准是什么?领域驱动设计DDD 回答了这样的问题,DDD会告诉你如果一个框架不能协助你实现分层架构,那就抛弃它,同时,DDD也指出选择框架的考虑目的,使得你不会人云亦云,陷入复杂的技术细节迷雾中,迷失了架构选择的根本方向。

现在也有些人误以为DDD是一种新的理论,其实DDD和设计模式一样,不是一种新的理论,而是实战经验的总结,它将前人使用面向模型设计的方法经验提炼出来,供后来者学习,以便迅速找到驾驭我们软件项目的根本之道。

JAVA程序员之路 篇8

Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。J2SE开发桌面应用软件比起VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。所以现在应用最广泛又最好学的就是J2EE了。J2EE又包括许多组件,如

Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。然后你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?还好,SUN提供了Javabean可以把你的JSP中的Java代码封装起来,便于调用也便于重用。接着就是EJB了,EJB就是Enterprise JavaBean,看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail了。

下面介绍几个好的Java方面的编程网站:

CSDN论坛http:/// 那里Java资料比较全;

java.com.cn http://.cn/ 看这域名就知道有多牛,注册用户快接近一万了,同时在线人数也在一千左右,人气很旺的;

IBM的开发者网

http:// IBM永远的蓝色巨人;

在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他还愿意不厌其烦地教你,这样好象有点难哦!

还有一个办法就是读开放源码的程序了。

下面介绍两个好的开源项目网站:

湖北省软件公共开发平http://gro.clinux.org/

共创联http://cosoft.org.cn/

中国UDDI技术联http:///developerWorks/cn/xml/index.shtml?csdn IBM可是Web服务的力推者

java程序员职业规划 篇9

Java求职必看:9道华为Java程序员面试题!

大公司的面试题,总是能代表着行业对从业者的要求,也代表着技术的发展趋势和方向,这里就整理9道华为的Java面试题,供Java从业者参考。

1.Java程序的种类有(BCD)

A.类(Class)B.Applet C.Application D.Servlet

2.下列说法正确的有(BCD)

A. 环境变量可在编译source code时指定

B. 在编译程序时,所能指定的环境变量不包括class path C. javac一次可同时编译数个Java源文件

D. javac.exe能指定编译结果要置于哪个目录(directory)

3.下列标识符不合法的有(ACD)

A.new B.$Usdollars C.1234 D.car.taxi

4.下列说法错误的有(BCD)A. 数组是一种对象 B. 数组属于一种原生类

C. int number=={31,23,33,43,35,63}

D. 数组的大小可以任意改变

5.不能用来修饰interface的有(ACD)A.private B.public C.protected D.static

6.下列正确的有(ACD)

A. call by value不会改变实际参数的数值 B. call by reference能改变实际参数的参考地址 C. call by reference不能改变实际参数的参考地址 D. call by reference能改变实际参数的内容

7.下列说法错误的有(ACD)

A. 在类方法中可用this来调用本类的类方法 B. 在类方法中调用本类的类方法时可直接调用 C. 在类方法中只能调用本类中的类方法 D. 在类方法中绝对不能调用实例方法

8.下列说法错误的有(ABC)

A. Java面向对象语言容许单独的过程与函数存在 B. Java面向对象语言容许单独的方法存在 C. Java语言中的方法属于类中的成员(member)

D. Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同

9.下列说法错误的有(BCD)

A. 能被java.exe成功运行的java class文件必须有main方法 B. J2SDK就是Java API C. Appletviewer.exe可利用jar选项运行.jar文件

java程序员职业规划 篇10

【关键词】双语教学  Java程序设计  教学模式

【基金项目】江苏高校品牌专业建设工程资助项目,项目编号(PPZY2015A033)。

【中图分类号】G42 【文献标识码】A 【文章编号】2095-3089(2016)35-0236-02

前言

1991年,Sun公司里的Green小组推出了一款面向对象的革新型的程序设计语言Java。因其具有简单易用和功能强大两大特征,国内外IT公司首选其作为桌面程序、Web程序、嵌入式和分布式系统应用的编写语言。我国对Java程序设计的人才的培养也不遗余力,除了计算机专业将其作为必修课外,一些非计算机专业的理工科专业也将其作为主修课,甚至采用双语教学。所谓双语教学,即采用英文和中文两種语言进行授课,使学生可以更好的掌握Java程序设计的本领,方便以后成为国际合作交流和竞争的IT人才。当然,国家相关政策对双语教学进行了规范和要求。2001年,我国教育部颁发了《关于加强高等学校本科教学工作提高教学质量的若干意见》,其中加强本科教学的12项措施中明确要求各高校在三年内开设5% - 10%的双语课程,并引进原版教材和提高师资水平。2005年,教育部又颁布了《关于进一步加强高等学校本科教学工作的若干意见》,其中指出不但要提高双语教学课程的数量又要继续提高其质量,甚至把双语教学纳入对高校评估的一项重要指标。可见双语教学对大学生的培养至关重要。

近年来,我院紧密围绕教育部提出的要求,深切贯彻各项方针,将《Java程序设计》设为双语教学课程。本文主要探索双语教学的模式,实践其方法,在教学过程中不断总结并改进,可以为同行提供宝贵的经验和指导作用。

一、Java课程的基本情况

90年代至今,Java语言一直活跃在编程语言的榜顶。凭借其语法简单、功能强大、安全可靠、多线程和跨平台等特征,一直成为计算机专业的必修课。近年来,随着社会对Java人才的需求,许多高校的非计算机专业也开设了Java程序设计相关课程。我校电子信息工程学院开设了《Java程序设计》这门课程始于2012年,迄今已经有5个年头了。课程主要的教学内容包括:Java语言概述、Java开发环境、Java程序设计基础、面向对象程序设计、集合类的使用、异常处理、Java I/O数据流与文件处理、Java多线程机制、JDBC数据库编程、Java网络编程等,本课程以专业选修的形式开设在大学第六学期。有了前期相关课程及电子信息专业英语的学习,一直以双语教学的形式进行。

通过本课程的教学,特别是贯穿始终的案例教学和设计实践,使学生掌握Java程序设计语言的基本概念和程序设计的基础知识,理解面向对象程序设计的思路和方法,并能运用Java技术和基本开发工具进行程序设计。培养学生的编程能力,启发学生的创新意识,提高学生在程序设计过程中分析问题和解决问题的实际动手能力,使学生的理论知识和实践技能得到共同发展。

二、双语教学模式

双语教学是指学校使用非母语进行全部或部分学科的教学。在我国,双语教学是用除汉语外的一门外语进行课堂教学,绝大多数使用的是英文。目前权威的双语教学的模式主要有以下三种:

(一)沉浸式双语教学Immersion Bilingual Education:学校的一切教学活动以外语进行,学生完全沉浸在非母语的学习环境中,比如香港的绝大数高校。

(二)保持式双语教学Maintenance Bilingual Education:学校的教学活动绝大部分以母语为主,只是后期逐渐使用第二外语进行部分学科的教学,比如我大陆目前的现状。

(三)过渡式双语教学Transitional Bilingual Education:学生进校后部分或全部的使用母语教学,然后转换为完全地使用第二语言进行教学,完成从母语到第二外语的过渡,比如国内的预科班。

针对以上三种主流双语教学模式,结合我国高等教育现状,选择保持式双语教学模式开展和推进Java程序设计双语教学工作更为合适。教师在授课过程中,采用汉语和英语两种语言授课,既方便“传道、授业、解惑”,又可以精确的把握课程的原汁原味的精髓,使学生因为乐趣而掌握这门晦涩的课程。

三、Java课程双语教学实践

(一)教材选用:引进优秀的英文原版教材,譬如《Thinking in Java》、《Effective Java》、《Core Java》、《Introduction to Java Programming》和《Java?鄄A Beginners Guide》等。授课老师可以指定一本英文原版书籍为教材,将其它优秀英文原版书籍作为参考书推荐给同学进行广泛阅读,从各个方面不同角度更好的理解Java语言编程。同时,为了减轻学生对英文教科书的学习难度,更好的准确理解和把握课程的主要学习内容,阅读有关Java语言编程方面的中文参考书也是必不可少的。

(二)课堂教学:双语教学与传统教学的不同,除了引进了优秀英文原版教材,实现教学内容与国际接轨,我院还与荷兰Saxion大学联合办学,在交流的过程中了解到Java课程在Saxion大学目前采用《Java?鄄A Beginners Guide》作为教材并使用IntelliJ IDEA这一Java集成开发环境配合Java课程的教学。而目前国内大学主要采用的Java IDE是Eclipse。Eclipse和IntelliJ IDEA是当前最常用的两个Java IDE开发工具,各有优劣。一些程序员因为IntelliJ IDEA开发效率较高,更加地智能而从Eclipse转向了IntelliJ IDEA。所以,我们的大学Java课程也可以适当的转向IntelliJ IDEA。

另一方面,是教学媒介的不同。使用英语作为第二语言,其可以贯穿于部分或整个教学过程中,包括教材、PPT讲义、课堂教学语言、实验指导书、作业、试卷等方面。很多人纠结第二外语和汉语在双语教学中的比重,其实在我们的Java程序设计课程中并不是过分强调外语的比重。Java课程双语教学的重点还是掌握Java编程的专业知识,在此基础上我们根据学生的英语应用能力,尽可能多的在教学过程中使用第二语言,从而达到在保证学生准确理解和掌握专业知识的同时提高学生英文水平的目的,从而提高Java课程双语教学质量。具体的来说,Java程序设计课程的教材、PPT讲义、作业、试卷等课程资源都采用英文这一课程媒介,但为了更好的理解专业知识,学生可以参考中文的专业书籍,试卷和作业中的题目尽可能的用英文作答,如果觉得有困难也可以用中文作答,在课堂上老师交替使用中英文,为了让学生更好的理解专业知识,先用英文介绍新的知识点,然后中英文结合着做进一步解释。

四、Java课程双语教学的思考

(一)学生英语水平欠缺:教学过程其实是教和学的过程,老师和同学共同决定着教学效果。开展双语教学,对学生的英语水平有一定的要求。对于学生而言,双语教学过程中的听说读写四个方面较为困难的就是“读”了,让很多学生最头疼的就是去读厚厚的全英文教科书了。在开始学习Java双语教学课程前,大多数学生没有尝试过大量的英文专业书籍的阅读,因此阅读速度慢,而且本能的读不进去,自然而然地就产生畏难情绪。这对Java双语教学的开展造成了很大影响,也不利于双语教学的顺利进行。其次就是听,因为涉及到一些专业的英文词汇,听力障碍造成思维的迟缓,甚至分心走神。所以讲解到专业词汇及其函数的用法时,可以用中文进行解释。

(二)双语教学师资力量缺乏:双语教学不仅对学生的要求高,同样对进行双语教学的授课老师也提出了新的要求。承担双语教学课程的老师在掌握扎实的专业知识和技术的基础上,还要具备良好的英语听、说、读、写的能力,不仅能够阅读专业上的英文文献资料和用英文撰写科技论文,而且还要具有用英语组织课堂教学和交流的能力。

(三)课堂的授课方式:在Java双语教学授课环节,会刻意的加强学生的课前预习。授课老师会将所有的英文PPT发布到Java程序设计课程网站上供学生下载,学生通过PPT膜片讲义可以了解整个课程的内容,又可以提前了解相关专业术语和生词。在Java程序设计课程的教学平台网站上,除了发布英文讲义PPT之外,还会上传Java双语课程的微课小视频。我们将Java课程各章节的重点和难点归纳总结出来,列出一系列的小标题,然后逐一录制并放在Java课程网站上让学生课后去观看,去回味。在Java双语课程的课堂教学过程中,除了采用老师讲,学生听的传统教学方法外,还结合翻转课堂教学法,让学生首先针对某个问题分组讨论,然后用英文总结解决问题的方法并制作PPT进行演讲汇报。

结论

随着全球经济一体化,为了更好的培养出具有国家合作交流和竞争的Java程序设计人才,我院积极的开展了《Java程序设计》这门双语教学课程。在采用保持式双语教学模式的基础上進行了实践、归纳和总结,从学生和老师自身的角度进行了思考,并给出了一些有用的经验和建议。

参考文献:

[1]教育部关于印发《关于加强高等学校本科教学工作提高教学质量的若干意见》的通知[J].教育部政报,2001,(10).

[2]教育部发出《关于进一步加强高等学校本科教学工作的若干意见》[J].中国高等教育,2005,(6).

基于Java多线程的聊天室程序 篇11

网上各个网站提供的聊天室基本都是B/S结构的, 现在用Java实现一个C/S结构的聊天室程序。C/S结构包括两个方面:一个运行在服务器;一个运行在客户端。

2 工作原理

服务器程序运行后就等待客户端程序连入, 客户端根据服务器的IP地址和端口号连入, 这样服务器和客户端就建立了一个连接, 而且可以有多个客户端同时连入一个服务器。连接建立好之后, 每个客户端的发言都发送给服务器, 服务器接收后再转发给所有连入的客户端, 这样每个客户端就都能收到其他客户发出的信息了。这就是C/S结构聊天室的工作原理, 其实现主要使用如下两种技术:

(1) Socket:网络套接字, 让两个应用程序通过一个双向的网络通信链接实现数据交换。即服务器和客户端的应用程序各有一个Socket, 这两个Socket把服务器和客户端的程序连接起来并交换数据。

(2) 多线程:因为一个服务器要连入多个客户端, 要让服务器程序同时为多个客户服务, 就需要为每个客户端开辟一个线程, 专门负责处理该客户的信息。此外, 客户端程序不仅要发送信息给服务器, 还要不断接收服务器转发过来的信息, 因此也需要开辟一个线程专门负责接收服务器的信息。

3 程序实现

3.1 服务器端

建一个类, 名称为ChartServer, 代表服务器程序。在该类中, 首先定义一个ServerSocket, 并指明端口号, 这样服务器端的Socket就建立好了。然后去接收客户端的请求, 并且把客户端传来的Socket放入一个HashSet中保存 (HashSet集合中保存所有客户的Socket, 以便服务器) , 最后启动一个线程负责该客户, 在线程中不断接收该客户发送的信息并转发给HashSet中所有的客户。代码如下:

3.2 客户端

建一个ChartClient类作为客户端程序。运行后如图1所示。首先构建好界面, 然后定义Socket, 指明服务器的IP地址和端口号, 这样就建立起了客户端到服务器的连接。连接建立之后服务器和客户端就可以互相发送数据信息了。接下来启动一个线程专门负责接收服务器发送来的信息并显示到聊天室里。最后, 还要写一个事件, 负责把客户的发言发送给服务器, 让发送按钮注册该事件, 这样单击按钮就可以发送信息了。在这个过程里, 信息的发送和接收都是通过I/O实现的。代码如下:

4 结语

Java程序员面试题 篇12

1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面:1)抽象2)继承3)封装4)多态性

2、作用域public,private,protected,以及不写时的区别 答:区别如下:

作用域 当前类 同包 子类 其他 public √ √√ √ protected√√√ × default √√× × private √×××

类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。

3、String 是最基本的数据类型吗? 答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。

4、float f=3.4;是否正确? 答:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4;或者写成float f =3.4F。

5、int 和Integer 有什么区别? 答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入不是对象的基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的封装类就是Integer,从JDK 1.5开始引入了自动封箱/解封箱机制,使得二者可以相互转换。

Java 为每个原始类型提供了封装类:

原始类型: boolean,char,byte,short,int,long,float,double 封装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

6、数组有没有length()方法?String 有没有length()方法?

答:数组没有length()方法,有length 的属性。String 有length()方法。

7、在Java 中,如何跳出当前的多重嵌套循环?

答:在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环。

8、是否可以继承String 类? 答:String 类是final类,不可以被继承。

9、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的属性可以在被调用过程中被改变,但对象的引用是永远不会改变的。C++和C#中可以通过传引用或传输出参数来改变传入的参数的值

10、抽象类(abstract class)和接口(interface)有什么异同? 答:

抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。

一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。

抽象类中的成员可以是private、默认、protected、public的,而接口中的成员全都是public的。抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法。

11、静态变量和实例变量的区别?

答:静态变量也称为类变量,属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝;实例变量必须依存于某一实例,需要先创建对象然后通过对象才能访问到它。

12、String s=new String(“xyz”);创建了几个字符串对象?

答:两个对象,一个是静态存储区的“xyx”,一个是用new创建在堆上的对象

13、接口是否可继承(extends)接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类可继承具体类,但前提是具体类必须有明确的构造函数

14、Java 中的final关键字有哪些用法?

答:(1)修饰类:表示该类不能被继承;(2)修饰方法:表示方法不能被重写;(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)

15、Error 和Exception 有什么区别? 答:Error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;Exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。

选择题

1、在Java

Applet程序用户自定义的Applet子类中,一般需要重载父类的(D)方法来完成一些画图操作。

A.start()

B.stop()

C.init()D.paint()

2、Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点?(B)

A)安全性

B)多线程

C)跨平台

D)可移植

3、下列哪个类声明是正确的?(D)

A)abstract final class HI{···} B)abstract private move(){···}C)protected private number;

D)public abstract class Car{···

4、在Java语言中,下列哪些语句关于内存回收的说明是正确的?(B)

A.程序员必须创建一个线程来释放内存;

B.内存回收程序负责释放无用内存

C.内存回收程序允许程序员直接释放内存

D.内存回收程序可以在指定的时间释放内存对象

5、字符串是Java已定义的类型,关于它的构造函数,下面说法不正确的是: B

A.String(char[] value, int offset, int count)

B.String(int[] codePoints,int offset,int count)

C.String(String original)

D.String(StringBuffer buffer)

6、下列说法中正确的是: C

A.导入包会影响程序的性能 B.包存储在类库中

C.包是类的容器D.上述说法都不对

7、哪个关键字可以对对象加互斥锁? B

A.transient

B.synchronized

C.serialize

D.static8、下列叙述中,错误的是: D

A、父类不能替代子类

B、子类能够替代父类

C、子类继承父类

D、父类包含子类

9、下列关于Java多线程并发控制机制的叙述中,错误的是:BC

A、Java中对共享数据操作的并发控制是采用加锁技术

B、线程之间的交互,提倡采用suspend()/resume()方法

C、共享数据的访问权限都必须定义为private

D、Java中没有提供检测与避免死锁的专门机制,但应用程序员可以采用某些策略防止死锁的发生

10、下列哪一个方法不是applet程序的组成部分:D

A、init()

B、start()

C、stop()

D、new()

11、下列Applet类的方法中,在Applet的整个生命周期里至多只执行一次的是:A

A、init()

B、start()C、stop()

D、paint()

12、启动一个线程所调用的方法是:C

A、run()

B、init()

C、start()

D、new()

13、编译Java

Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B)。

A..java

B..class

C..html

D..exe

二、填空题(每空格1分,共20分)

1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、编译生成字节码和解释运行字节码。

2、如果一个Java

Applet源程序文件只定义有一个类,该类的类名MyApplet,则类MyApplet必须是Applet类的子类并且存储该源程序文件的文件名为MyApplet。

3、若x=5,y=10,则x=y的逻辑值分别为true和false。

4、抽象(abstract)方法方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。最终(final)方法方法是不能被当前类的子类重新定义的方法。

上一篇:印象中的中秋佳节作文400字下一篇:nba历史23大状元