搜公司、看面经、查工资
java软件研发
java软件研发是做什么的?本页面为用户提供了java软件研发的岗位职责,以及本职位近些年的薪资待遇情况、就业趋势、招聘趋势、面试经验等信息,综合图表数据多方面解析该职位的热度。
2024-09-09 05:00:00 更新
主页
工资
就业
招聘
面试
java软件研发简介
岗位职责
简介 Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现均支持Java applet 平台 Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。现常用的Java平台基于Java1.5,最近版本为Java1.7。 Java分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。 语言特点 Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。 当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。那么Java到底有何神奇之处呢? Java语言其实最早诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。 在Java出现以前,Internet上的信息内容都是一些乏味死板的HTML文档。这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希望能在WEB中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力。SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的WEB开发人员都心生感叹:噢,这正是我想要的!于是Java成了一颗耀眼的明星,丑小鸭一下子变成了白天鹅。 学习 Java是个平台,我只想说说我对学好Java的一点看法,希望对初学者有所帮助。 1. 思考一下 学习Java之前,先别急,静下心来好好想想: 1)你对学习Java是否有兴趣? 2)你是否能静下心来坚持不懈地学习? 嗯,这是个容易但又绝对不应该忽略的问题,你确信自己对Java感兴趣、而且又有吃苦的准备,那你才可能学好Java!如果具备这两点条件,就请继续往下看…… 2. 准备一下 请不要把你的学习Java之路和其它计算机技术分开看待,技术的联系往往是千丝万缕的,你应该掌握一些学习Java所涉及的基础知识,对于“CLASSPATH要怎么设置啊”、“跪求JDK下载地址”等等问题,你不该问,因为Internet上太多答案了,甚至换个角度说,你是不是还不适合直接学习编程? 1)买本Java学习用书。 JDK 6正式版刚刚推出,市面上你暂时买不到JDK6的书籍,但我仍推荐你买一本适合入门的、较新JDK版本的Java书籍,那么,你现在选择一本讲述JDK5的入门书籍还是有条件的。我可以推荐一些入门书,但是我不打算这么做,因为合我口味的,不一定适合你。但无论如何,《Thinking In Java》绝对不应该作为你入门Java的第一本书籍! 记住,网络上学习Java的资源很多,但基本不够系统,拥有一本Java入门书籍,是你系统学习Java的基础。 2)准备Java学习环境。 准备你的学习环境,很简单,安装JDK6,然后用类似UltraEdit、EditPlus的文本编辑器配置你的学习环境,Internet上有很多关于如何配置的文章。初学Java,不建议用IDE工具,通过一行行的敲代码,你会碰到很多问题,只有这样,你才能学会怎样解决问题,并加深自己对Java的理解。 准备好后,开始进入激动人心的Java学习里程吧! 3. Java基础学习之路 学习Java的过程虽然辛苦些,但又是处处有精彩!学习过程中的心态一定要保持专一,网上关于语言间的“PK”到处都是,别被浮躁影响!认准了Java,你就坚持!克服心魔,恒心最终会给你回报的。 Java的体系分为Java SE、Java EE和Java ME(JDK 5.以前分别叫J2SE、J2EE和J2ME),Java的敲门砖就是Java SE了,也就是你要入门学习的内容,不论你日后是选择哪个体系领域作为发展方向,你都得从Java SE起步。 学习Java SE,打好Java基础;如果想学Java EE(对不起,我不了解JavaME,所以我无法涉及JavaME的相关内容),对于AWT、Swing是否要学习呢,我个人是觉得还是要知道其所以然的,特别是其事件处理模式,我强烈建议初学者一定要弄清楚,其他具体的开发就不一定要全面掌握了,毕竟AWT、Swing方面的内容足够用几本大部头的书才能描述详尽;当然,如果你的工作就是做AWT、Swing开发,那就另当别论了。 l/o、Thread都是基础之一。 4. Java EE学习之路 学习了Java SE,还只是完成“万里长征”的第一步。 接下来选择学习Java EE或是Java ME(或者你还想不断深入学习JavaSE,只要你喜欢,你可以一直深入下去,就像前面所说的,我不会讲到Java ME的学习);估计选择Java EE方面的学习者会多一些,JavaEE所涉及技术非常多,考虑到初学者的接受程度,我会尽量从最常用的角度来介绍。 学习Java EE,在开发环境上不建议再用文本编辑器,我感觉NetBeans 5.5(目前最高正式版本)很适合初学者,我个人也很喜欢NetBeans,如果你喜欢用别的IDE如Eclipse,都没问题,看自己喜欢吧。 4.1 学习JSP/Servlet Java EE最高版本现是5.版本。 在JavaEE中,首先要学习JSP/Servlet(结合Tomcat、MySQL)技术,建议JSP1.2/2.X的知识都要掌握,毕竟现很多的在用系统都还是基于JSP1.2,学习JSP,还必须掌握一些外延技术,如:你还得掌握HTML基础知识,最好再掌握些JavaScript(现正火的AJAX技术之一)、CSS的技术,而了解XML是必不可少的(至少描述性配置信息是通过XML来描述的)。在学习JSP/Servlet过程中,应该结合学习JDBC、数据库开发技术,毕竟绝大多数Java Web项目都是和数据库紧密结合的。 4.2 学习数据库开发技术 这里我想重点说一下数据库开发技术,数据库技术是做业务系统必备技能,JavaWeb开发人员最低程度都应该掌握SQL语句的使用!数据库技术大体可分为DBA技术和数据库开发技术,对于开发而言,应侧重数据库开发技术,而数据库基本操作,也是要掌握的。常用数据库有DB2、Oracle、SQLServer、MySQL等,你可以结合实际需要,选择一种数据库,并花大力气掌握其开发技术。 记住,学习数据库开发技术和学习Java EE,是相对独立的,你可以在学习JSP/Servlet的同时,学习数据库开发技术(如SQL语句等),或者先学数据库开发技术,之后再学习JSP/Servlet。 4.3 学习Java EE其它开发技术 再往后,可以学习一些EJB的知识,目前EJB最新版本是3.,其和前面的2.X版本相比,有较大不同,考虑到现EJB2.X还有很大的应用市场,建议结合学习EJB 2.X/3.。在学习EJB过程中,应同时掌握一种企业级应用服务器的使用(如WebSphere、Weblogic、Sun Applcation Server或JBOSS等,现Sun Applcation Server9.X和JBOSS都可支持EJB 3.)。 之后的学习中,再逐渐扩展到其他Java EE技术。 5. 之后 等你对Java EE有些感悟的时候,你自然就会想不断扩展你的知识面,这时候你可以学习Spring、Hibernate,以及各种Web框架(如Struts、JSF、Webwork或是Tapestry等)。 随着技术、经验的不断积累,你会逐步关注分析、设计等更高层次的知识,这时候,你可进一步学习相关的UML、模式等知识(积累了一定经验,你就可以安排自己学习这些知识了)。 6. 小结 永远记住:自始至终,实践是学习Java技术历程中极其重要的一环。脱离了实践,是学不好技术的! Java学习、实践之路依然没有银弹,况且一步步走来,要学的东西很多,勤奋是金! 善于利用Internet上众多的资源,多吸取些别人的经验。 首个程序 //文件名HelloWorld.java //声明一个类 public class HelloWorld { //声明一个方法 public static void main(String args[]){ //程序的入口 //输出 System.out.println(“hello world!”); } } //例子 package Text; public class Test{ public static void main(String args[]){ short d = 12; //短整型 System.out.println(d); //输出d long c = 144L; //长整型,要加l System.out.println(c); //输出c int z = 15; //整型 System.out.println(z); //输出z char e = 我; //字符型“我” System.out.println(e);//输出e } } //无编译工具 编译运行java程序 //路径是相对路径 编译java javac[java源程序名称。java] //一定要加上后缀名 //这个时候你会发现你的原程序旁边多了一个.class文件,文件名和源文件名称相同 //有编译错误会提示 运行java java [java源程序名称] //不需要加后缀名,自动运行。class文件 //显示程序运行结果 架构设计 软件架构作为一个概念,体现在技术和业务两个方面。 从技术角度来说:软件架构随着技术的革新不断地更新其内容,软件架构建立于当前技术和一些基本原则的基础之上。 先说一些基本原则: 分层原则:分层是为了降低软件深度复杂性而使用的关键思想,就像社会有了阶级一样,软件有了层次结构。 模块化原则:模块化是化解软件广度复杂的必然手段,模块化的目的就是让软件分工。 接口实现分离原则随着软件模块化的不断深入改进,面向接口编程而不是面向实现编程可以让复杂度日趋增高的软件降低模块之间的耦合度,从而让各模块更轻松改进。从这个原则出发,软件也从微观进行了细致的规范化。 还有两个比较小但很重要的原则: 细节隐藏原则很显然把复杂问题简化,把难看的细节隐去,能让软件结构更清晰。其实这个原则使用很普遍,java/c++语言中的封装原则以及设计模式中的Facade(外观)模式就很能体现这个原则的精神。 依赖倒置原则随着软件结构的进一步发展,层与层之间、模块与模块之间的依赖逐渐加深,而层、模块的动态可插拔要求不端增大。依赖倒置原则可看视为接口实现分离原则的深化,根据此原则的精神,软件进入了工具时代。这个原则有点类似于知名的好莱坞法则:Dont call us, well call you。 以上这些原则奠定了我们的软件架构的价值指标。但软件架构毕竟是建立在当前技术之上的。而每一代技术都有架构模式。过去的不再说了,让我们就来看一下当前流行的技术,以及当前我们能采用的架构。 因为面向对象是当前最流行开发技术,且设计模式的大量使用使面向对象的走向成熟,而数据库是当前最有效的存储结构、web界面是当前最流行的用户接口,所以当前最典型的三层次架构就架构在以上几项技术的基础之上,用数据库作存储层、用面向对象来实现业务层、用web来作为用户接口层。我们从三层次架构谈起: 因为面向对象技术和数据库技术不适配,所以在标准三层次架构的基础上,我们增加了数据持久层,来管理O-R双向映射,但目前一直没有最理想的实现技术。cmp和entity bean技术因为其实现复杂,功能前景有限,已接近被淘汰的边缘。JDO及hibernate作为o-r映射的后期之秀,尤其是hibernate,功能相当完备。推荐作为持久层的首选 在业务层,因为当前业务日趋负载,且变动频繁,所以我们必须有足够敏捷的技术来保证我们的适应变化的能力,在标准j2ee系统中session bean负责业务处理,且有不错的性能表现,但采用ejb系统对业务架构模式改变太大,且其复杂而昂贵,业务代码移植性差。而spring 作为一个bean配置的轻量级架构,漂亮的IOC模式实现,对业务架构影响小,所以推荐作为中间层业务框架。 在用户结构层,虽然servlet/jsp/jstl/javaBean 能够实现MVC架构,但终究过于粗糙。struts对MVC架构的实现就比较完美,Taperstry也极好地实现MVC架构,且采用基于事件的方式,非常诱人,惜其不够成熟,我们仍旧推荐struts作为用户接口层基础架构。 因为业务层是三层次架构中最有决定意义的,所以让我们回到业务层细致地分析一下,在复杂的业务我们常常需要以下基础服务的一种或几种:事务一致 性服务acid(tool:jta/jts)、并发加锁服务concurrent&&lock、池化管理服务cache、访问控制服务(tool:jaas)、流程控制服务workflow、动态实现服务IOC,串行化消息服务(tool:jms)、负载平衡服务blance等。如果我们不采用重量级应用服务器(如weblogic,websphere,jboss等)及重量级组件(EJB),我们必须自己实现其中一些服务。虽然我们大 多情况下,不需要所有这些服务,但实现起来却非易事。幸运的是我们有大量的开源实现代码,但采用开源代码却常常是件不轻松的事。 随着xml作为结构化信息传输和存储地位日渐重要,一些xml文档操作工具(DOM,Digester,SAX等)的使用愈发重要,而随着 xml schema的java binding工具(jaxb,xmlbean等)工具的成熟,采用xml schema来设计xml文档格式,然后采用java binding来生成java bean 会成为主要编程模式,而这又进一步使数据中心向xml转移,使在中小数据量上,愈发倾向于以xquery为查询语言的xml数据库。现还有一个趋势, microsoft,ibm等纷纷大量开发中间软件如(microsoft office之infopath),可以直接从xml schema 生成录入页面等非常实用的功能。还有web service 的广泛应用,都将对软件的架构有非常重大的影响。至于面向服务架构(SOA)前景如何,三层次架构什么时候走入历史,现还很难定论。 aop的发展也会对软件架构有很深的影响,但在面向对象架构里,无论aspectJ还是jboss-aop抑是aspectWerks、 nanning都有其自身的严重问题:维护性很差,所以说它将很难走远。也许作为一个很好的思想,它将在web service里大展身手。 rdf,owl作为w3c语义模型的标志性的语言,也很难想象能在当前业务架构发挥太大影响。但如果真如它所声称那样,广泛地改变着信息的结构。那么对软件架构也会有深远影响。 开发技巧 Eclipse中最常用的快捷键:Ctrl+L Go to Line F5 Step Into Ctrl+H Open Search Dialog Ctrl+Shift+K Find Previous Ctrl+F11 Run Ctrl+Shift+ Remove Block Comment F11 Debug Ctrl+Shift+/Add Block Comment Ctrl+K Find Next F8 Resume (during Debug) Ctrl+O Quick Outline Alt+Shift+RRename (Refactoring) F3 Open Declaration Ctrl+R Run to Line Ctrl+/ Toggle Comment Ctrl+Shift+O Organize Imports F6 Step Over Ctrl+Shift+F Format Ctrl+Shift+G References in Workspace 代码规范 1、组织与风格 (1).关键词和操作符之间加适当的空格。 (2).相对独立的程序块与块之间加空行 (3).较长的语句、表达式等要分成多行书写。 (4).划分出的新行要进行适应的缩进,使排版整齐,语句可读。 (5).长表达式要在低优先级操作符处划分新行,操作符放在新行之首。 (6).循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。 (7).若函数或过程中的参数较长,则要进行适当的划分。 (8).不允许把多个短语句写在一行中,即一行只写一条语句。 (9).函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。 注:如果大家有兴趣可以到安安DIY创作室博客,有相关说明性的文章和解释。 2、注解 Java 的语法与 C++ 及为相似,那么,你知道 Java 的注释有几种吗?是两种? // 注释一行 /* ...... */ 注释若干行 不完全对,除了以上两种之外,还有第三种,文档注释: /** ...... */ 注释若干行,并写入 javadoc 文档 注释要简单明了。 String userName = null; //用户名 边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。 在必要的地方注释,注释量要适中。注释的内容要清楚、明了,含义准确,防止注释二义性。 保持注释与其描述的代码相邻,即注释的就近原则。 对代码的注释应放在其上方相邻位置,不可放在下面。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释应放在此域的右方; 同一结构中不同域的注释要对齐。 变量、常量的注释应放在其上方相邻位置或右方。 全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。 在每个源文件的头部要有必要的注释信息,包括:文件名;版本号;作者;生成日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其它文件关系等);主要函数或过程清单及本文件历史修改记录等。 /** * Copy Right Information : Neusoft IIT * Project : eTrain * JDK version used : jdk1.3.1 * Comments : config path * Version : 1.1 * Modification history :23.5.1 * Sr Date Modified By Why & What is modified * 1. 23.5.2 Kevin Gao new **/ 在每个函数或过程的前面要有必要的注释信息,包括:函数或过程名称;功能描述;输入、输出及返回值说明;调用关系及被调用关系说明等 /** * Description :checkout 提款 * @param Hashtable cart info * @param OrderBean order info * @return String */ public String checkout(Hashtable htCart, OrderBean orderBean) throws Exception{ } javadoc注释标签语法 @author 对类的说明 标明开发该类模块的作者 @version 对类的说明 标明该类模块的版本 @see 对类、属性、方法的说明 参考转向,也就是相关主题 @param 对方法的说明 对方法中某参数的说明 @return 对方法的说明 对方法返回值的说明 @exception 对方法的说明 对方法可能抛出的异常进行说明 3、命名规范 定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。(这些规范并不是一定要绝对遵守,但是一定要让程序有良好的可读性)较短的单词可通过去掉元音形成缩写;要不然最后自己写的代码自己都看不懂了,那可不行。 较长的单词可取单词的头几发符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。 使用匈牙利表示法 Package 的命名 Package 的名字应该都是由一个小写单词组成。 package com.neu.util Class 的命名 Class 的名字必须由大写字母开头而其他字母都小写的单词组成
展开
java软件研发工资
详情
月收入平均值
¥
22,749
高于平均值占比
0%
月收入中位数
¥
20,733
近一年趋势
持平
整体分布
历年变化
最低:¥2,001
最高:¥79,977
*java软件研发在全国的平均月薪为¥22,749,中位数为¥20,733,其中¥22k-30k工资占比最多,约20%。
java软件研发就业
详情
同比上月,人才热度
+0.41%
java软件研发招聘
详情
同比上月,职位数量
+0.34%
java软件研发面经
详情
看准53971
java软件研发
未通过
面试过:
HXIN
较难,问题比较犀利
2022-09-20 发布
匿名用户
java软件研发
未通过
面试过:
NHN CHINA
先花40分钟做一套试卷,之后开始一对一的技术面试,考官根据我做题的情况和简历问一些技术问题。笔试题有基础题,但是不简单,比网上那些笔试题难很多,还是要相当有实力的人才能做得得心应手。 面试的时候,考官问的题也比较难,没有什么基本的概念性东西,一般是让把某个东西解释清楚,比如我的简历中写了了解多线程编程,就被问到了解什么程度,多线程编程要注意些什么,知道锁,怎么用锁吗?诸如之类。总之,不简单啊
...查看更多
包含1个问题,0个回答
Q:某个项目中遇到的难点?怎么解决的? 讲述某个项目的系统结构? 设计模式 多线程编程
2 年前 发布
匿名用户
java软件研发
确定通过
面试过:
软通动力
原先在武汉软帝学习,还没学完就推荐到软通动力笔试,早上9:30,做了一套java题,很基础,就回去软帝等消息。过2,3天接到软通面试通知,也是早上9:30,先技术面试,面试官挺好,一直笑。问的全是原来做过的项目问题,很细,因为自己刚做的都答出来了。然后hr面试,主要问能不能出差,出很久行不行,我当时没考虑太多,都说行,谈工资我也没要求,最后拿到offer。
...查看更多
包含1个问题,0个回答
Q:做过的项目使用了什么框架,几层机构
2 年前 发布
相关岗位
软件工程师
研发工程师
软件开发工程师
软件开发
软件测试工程师
软件测试
软件研发工程师
java
java工程师
java开发工程师
首页
java软件研发
热门职位
薪资待遇
就业趋势
热招岗位
面试经历
java软件工程师岗位职责
java软件人员岗位职责
JAVA高级软件工程师岗位职责
JAVA软件架构师岗位职责
Java软件开发岗位职责
终端客户代表岗位职责
效果图绘图岗位职责
图书策划岗位职责
饰品设计岗位职责
公司法务岗位职责
钣金设计岗位职责
专卖店设计岗位职责
项目配置工程师岗位职责
采购计划经理岗位职责
项目策划员岗位职责
旅行社销售岗位职责
产品维修工岗位职责
财务计划经理岗位职责
施工助理岗位职责
零售督导岗位职责
java软件工程师工资
java软件人员工资
JAVA高级软件工程师工资
JAVA软件架构师工资
Java软件开发工资
终端客户代表工资
效果图绘图工资
图书策划工资
饰品设计工资
公司法务工资
钣金设计工资
专卖店设计工资
项目配置工程师工资
采购计划经理工资
项目策划员工资
旅行社销售工资
产品维修工工资
财务计划经理工资
施工助理工资
零售督导工资
java软件工程师就业前景
java软件人员就业前景
JAVA高级软件工程师就业前景
JAVA软件架构师就业前景
Java软件开发就业前景
终端客户代表就业前景
效果图绘图就业前景
图书策划就业前景
饰品设计就业前景
公司法务就业前景
钣金设计就业前景
专卖店设计就业前景
项目配置工程师就业前景
采购计划经理就业前景
项目策划员就业前景
旅行社销售就业前景
产品维修工就业前景
财务计划经理就业前景
施工助理就业前景
零售督导就业前景
java软件工程师招聘
java软件人员招聘
JAVA高级软件工程师招聘
JAVA软件架构师招聘
Java软件开发招聘
终端客户代表招聘
效果图绘图招聘
图书策划招聘
饰品设计招聘
公司法务招聘
钣金设计招聘
专卖店设计招聘
项目配置工程师招聘
采购计划经理招聘
项目策划员招聘
旅行社销售招聘
产品维修工招聘
财务计划经理招聘
施工助理招聘
零售督导招聘
java软件工程师面试
java软件人员面试
JAVA高级软件工程师面试
JAVA软件架构师面试
Java软件开发面试
终端客户代表面试
效果图绘图面试
图书策划面试
饰品设计面试
公司法务面试
钣金设计面试
专卖店设计面试
项目配置工程师面试
采购计划经理面试
项目策划员面试
旅行社销售面试
产品维修工面试
财务计划经理面试
施工助理面试
零售督导面试