做了Java已经多年,深深感觉软件开发这门工程学发展迅速,各种技术层出不穷,现在Java系统开发比起10多年前容易不少。有太多太多的各种工具来帮助保证质量,帮助快速开发部署。程序员可以更多的关注在业务逻辑的代码开发,而不是构建,部署。在不同的工作环境和工作经历中,我深深感觉到技术,流程对开发的巨大影响。工欲善其事,必先利其器这句话对软件开发也是非常适用的。
最近公司招人,面试了不少人,发现很多人所在的公司对项目的开发还是停留在作坊式,并没有花时间去建立好的开发流程,好好的利用各种工具。在我看来,虽然建立好的开发流程需要花费不少时间去研究和集成各种工具,但是可以说是有百利无一害的好事情。在大开发方向上,完全可以在不同项目之间重用,只有细节环节上需要各个项目提供自己的特殊实现。接下来分享下我自己工作经验中Java项目开发使用的技术和工具,和大家交流交流。

首先需要source control工具来保存统一源代码,方便版本控制。这个基本上每个公司都会有,免费的一般有git和svn,很显然git比svn好太多。SVN创建/checkout一个branch总是要等半天。
接下来需要好的IDE来帮助开发,在Java里面Eclipse和Intellij可以算是通用主流工具了。
开发的代码需要打包成运行的产品,可以是包含运行环境的zip,也可以是单个或者多个war,ear包。Maven或者Gradle是好帮手。
产品也需要版本控制,maven nexus可以用来存储和管理产品包,方便维护。
产品需要部署到测试,生产环境中,如何自动化部署是一个非常重要的课题,在这一步上,好的工具都是要钱的,大部分的时候还是要根据运行环境使用脚本来执行。
部署之后的系统需要7*24小时实时监控,除去公共监控属性,例如:CPU,Memory,IO,network之外,系统特别需要设计好自己要监控的Metrics Data,数据可以在nagious和Graphite中展示。另外大的系统还可能需要日志分析工具Logstach和electricsearch。
当然开发的代码自然需要保证代码质量,这个时候Junit和Mock进行单元测试,外接Mock Service进行功能和集成测试,Jmeter等工具进行压力和性能测试,Sonar可用于检查代码规范和测试覆盖。如果有需要,也可以使用code review工具比如:gerrit。
最后这些工具需要一个统一的环境来达到自动触发测试,构建(例如:每次代码提交或者每天),这个时候我们可以使用Jenkins来达到这个目的。

列出清单如下:
1. Source code Control: Git
2. Project Develop IDE: Eclipse
3. Code Review:gerrit
4. Code Quality Control: JUnit/FT/IT/Sonar
5. Project management and comprehension tool: maven
6. Deployment: scripts
7. Continues Integration & Auto deploy: Jenkins
8. Application Monitor: nagious
9. Log Analysis:Logstash & electric search
10. Performance testing: jmeter

这里面Git, Eclipse, Gerrit, Sonar, Maven, Jenkins, nagioius都是可以可重用的工具,而单元测试,集成测试,性能压力测试,自动化部署,系统内部指标监控就必须每个系统各自弄各自的一份。

工具是死的,人是活的。如果能够用好这些工具,那么敏捷,devops就近在眼前,开发可以变的更简单。如果对工具的使用不定义好相关的规则,只是胡乱使用,比如提交代码不加入相应的bug id,feature id,无法追查代码提交缘由,单元测试只是调用被测试代码,不检查测试结果,再好的工具也是枉然。

注1:这里面只是列了我在工作环境中使用过的能够有效帮助系统开发的工具,其中有一部分我只是有使用经验,并没有安装和troubleshooting的经验。欢迎大家一起来讨论如何有效使用工具帮助优化开发。
注2:这里不涉及开发流程中的功能和bug管理系统的讨论,因为公司用的都是要钱的Jira。Eclipse自带的mylyn不知道怎么样,大家可以参考https://eclipse.org/mylyn/new/ http://www.tasktop.com/resources/videos/git-gerrit-hudson-one-mylyn 自己集成看看,有其他好用的,也希望大家可以推荐有免费,谢谢。
注3:有空会慢慢把自己用过的安装过的东西拿出来和大家share一下,欢迎拍砖!

我的Java开发技术总结相关推荐

  1. java开发技术有什么意义,零基础学Java开发技术有哪些优势和好处?

    零基础学Java开发技术有哪些优势和好处?Java开发技术有下列优势:Java编程语言简单.面向对象集中于对象及其接口.分布式处理TCP/IP协议.鲁棒性.安全性.体系结构中立性.可移植性.解释执行. ...

  2. 读书笔记《Java开发技术-在架构中体验设计模式和架构之美》

    一.Java程序员的三层境界 第一层:豪情万丈,欲与天公试比高 java开发技术掌握,工具娴熟,可以按要求独立完成类.接口和算法的开发:能注重技巧:热衷于谈技术问题.修炼第一层境界还是比较辛苦的. 第 ...

  3. 现在最流行的Java开发技术是什么?

    分享一下前段时间自己第三面的面试经历吧,虽然现在入职的不是BAT,但也算是细分领域里的准独角兽公司了,希望可以对你有所帮助哈. 面试官:一面.二面他们对你的评价很高啊.我看你写着精通Spring,今天 ...

  4. 高级JAVA开发 技术栈知识点总结

    高级JAVA开发 技术栈知识点总结 写在前面 MQ Redis Dubbo 分布式系统 JVM Java基础 写在前面 "金三银四"对于今年(2019)的互联网行业行情并不适用,面 ...

  5. 自学Java开发技术靠谱吗?

    自学Java开发?事实上,Java是完全可以自学成才,只不过这条路比较艰苦,花费的时间和努力都是比较长的,很多人走着走着就这么放弃了,不仅浪费了时间不说,更会产生觉得自己不适合做Java开发这样的挫败 ...

  6. java技术_2020年最流行的Java开发技术

    点击上方"千锋教育"后台回复「 Java 」,领取视频学习教程 在本文中,我们将以编程界最常用的编程语言Java为例,分享最为主流的技术与工具.Java几乎无处不在,无论在智能手机 ...

  7. Java开发技术有哪些?

    Java在IT技术圈中仍然占据着主流地位,开发者想要不被企业淘汰就需要不断的学习掌握最新的技术,才能更具竞争力. 从技术角度来看,Java世界内的框架是最大的不同之一.突出的Java框架有: Quar ...

  8. Java程序员必看:2020年最流行的Java开发技术

    在本文中,我们将以编程界最常用的编程语言Java为例,分享最为主流的技术与工具,下面和千锋广州小编一起来看看吧! Java几乎无处不在,无论在智能手机.台式机.游戏设备还是科学超级计算机上,处处都有J ...

  9. Java程序员必看:2022年最流行的Java开发技术

    在本文中,我们将以编程界最常用的编程语言Java为例,分享最为主流的技术与工具,下面和小编一起来看看吧! Java几乎无处不在,无论在智能手机.台式机.游戏设备还是科学超级计算机上,处处都有Java的 ...

  10. Java开发技术总结!南京华泰证券java开发

    二.我们先来看看这份笔记到底有什么 1.先把kubernetes跑起来(先跑起来+创建kubernetes集群+部署应用+访问应用+Scale应用+滚动更新) 2.重要概念 3.部署kubernete ...

最新文章

  1. php生成vcf,详解PHP如何实现生成vcf vcard文件
  2. Zookeeper概述、特点、数据模型
  3. leetcode842. 将数组拆分成斐波那契序列(回溯)
  4. 路由器距离向量算法计算举例_路由器基本原理是什么 路由器基本发展情况介绍【图文】...
  5. Python中用户管理(用户的登陆、用户的增删改查)
  6. 感知器算法超详细讲解实战【原理+手撸代码实现】+spark应用实践
  7. java 线程池的原理与实现_Java线程池原理及实现
  8. 再回首Java第二十二天
  9. sprint演示会议
  10. python堆叠柱状图加数字_Python 堆叠柱状图绘制方法
  11. Day3-中文分词技术(常用分词技术介绍)
  12. 记一段随风而逝的感情
  13. 【转】Ceph对象存储(rgw)的IPv6环境配置
  14. Linux Socket 两个客户端通信,服务端作为中转
  15. ip地址位置提供商查询 cip.cc/ip
  16. 小程故事多 | 看来微服务就是一把双刃剑
  17. pytorch各种版本最简单安装,不用自己安装cuda cudnn
  18. 第2阶段19-vue自定义模板
  19. 火墙-firewalld
  20. C# System.ObjectDisposedException:“无法访问已释放的对象。 ObjectDisposed_ObjectName_Name”

热门文章

  1. 每天吃2根香蕉,30天后你会发现自己有惊人的变化!
  2. 牛逼闪闪的腾讯开源运维系统平台!
  3. win10 10586 正式版安装sql2000(笔记)
  4. c语言dfs算法初步讲解,[转载]算法初步
  5. kafka —— consumers 消费者 group 找不到得原因
  6. [软件人生]感慨邱成桐!闲聊学术界
  7. 判别两棵树是否相等 设计算法_BAIR最新RL算法超越谷歌Dreamer,性能提升2.8倍
  8. 愚人节恶搞网站谨防遭黑客攻击
  9. springboot在项目启动时加载字典表数据进map内存,真实测试通过。
  10. 120年奥运史:运动员和成绩(相关数据集)