【Java二十周年】Delphi转行java的一些小感触
本文纯属一届小码农对java使用过程的体验感触
目录:
初遇java编程语言
刚上大学的时候,完全是个电脑盲。刚入学学的计算机普及知识就是visual basic语言,可视化的组件编程语言,这个语言跟我第一份工作Delphi语言的是一个性质的,都是拖放控件,实现可视化开发,跟现在用着的extjs 中architect相似,想要显示什么,直接拖放这个组件就可以的。接触java都是大三的事情了,那时候开专业课(管理信息系统专业),就补充了java编程语言这么课程。那时候教科书红宝书便是下面这样的:
记得当初学visual basic是多么简单的事情,后来接触到java开始学面向对象,当时觉得理解都有难度,现在想来,当初毕竟是经历少,做的东西也就是写个hello word,没有经历多大的项目锤炼,当然就没有体验到面向对象这样的好处。
与java的擦肩
这红宝书伴随的时间不超过一年,接着就到了找工作的时间,怀着对编程的热爱,专心找了一份编程的工作,于是,从青岛跑到了帝都北京,当初对编程还只是懵懂的热爱,对语言的认知也仅仅停留在cmd窗口与简单form之上,甚至那时候,eclipse的使用都是新鲜的要命。面试的时候表现有点发挥超常,第一个面试就通过了,还给了比期望值高的薪水,然后就这样放弃了java,选择了delphi。在这之间,还使用java+lucene做过一个爬虫项目,当时还是算不错的项目。
深入java
在帝都做开发,对项目管理工具,对编程思想,对敏捷开发可以说是练就了一身功夫,苦着就是一直维护一个产品,十几个开发围着一个大产品修修补补,总觉得不是长久之计,于是于去年年中决定离开。其实挺喜欢刚入组的导师说过的一句话,面对一个不理想的环境,你有三个选择,要么你适应它,要么你改变它,要么你离开它。
我选择了离开delphi,我选择进入之前还有些基础的java.我开始尝试项目来替代产品。于是,在这半年将近的时间,我也慢慢体验着两个语言之间的不同魅力。
1.跨平台性:
delphi做桌面产品,算是登峰造极的,它也支持面向对象的开发,它使用的pascal语言也良好的支持接口开发,支持com+支持组件扩展,但是它在跨平台上却略逊一筹,我们的新版本要在win8上良好运行,那都要来回修修补补好多次,更不用说linux mac等等了。而对于java来说,绝不会有这个困扰。
2.开源支持:
对于delphi来说,你想要找某些支持,那是费劲的很,相比之下,java下有无比多得开源项目,如果我们偷懒,那我们之间拿来主义,放入自己项目便可,如果我们勤奋,我们多看人家源码,多学人家设计,我就可以不断提升自己提升项目,而delphi来说,有点一潭死水的赶脚。
3.web的支撑
我们部署java的web项目,可以选择的服务器也多得很,对于互联网如此发达的当今社会,如果像delphi那样,只是对桌面产品精湛,那无疑丧失了最大的网络市场。
一种语言的存在,当然不能只从这几点来评判,但是从一个底层使用者来说,我觉得要做一个桌面产品,delphi是一个不错的选择,会节省你N多时间,像java来开发一个界面优美的程序,恐怕得比delphi要多花几倍的时间,但是如果你要进军互联网,那么java的优势不言而喻。
Java 20周年,不管是否有人厌恶它,它都已经给我们从业者以及无数企业创造了巨大的利润,让我们一起祝福它吧。
【Java二十周年】Delphi转行java的一些小感触的更多相关文章
- 聊聊高并发(二十五)解析java.util.concurrent各个组件(七) 理解Semaphore
前几篇分析了一下AQS的原理和实现.这篇拿Semaphore信号量做样例看看AQS实际是怎样使用的. Semaphore表示了一种能够同一时候有多个线程进入临界区的同步器,它维护了一个状态表示可用的票 ...
- 聊聊高并发(二十九)解析java.util.concurrent各个组件(十一) 再看看ReentrantReadWriteLock可重入读-写锁
上一篇聊聊高并发(二十八)解析java.util.concurrent各个组件(十) 理解ReentrantReadWriteLock可重入读-写锁 讲了可重入读写锁的基本情况和基本的方法,显示了怎样 ...
- 聊聊高并发(二十八)解析java.util.concurrent各个组件(十) 理解ReentrantReadWriteLock可重入读-写锁
这篇讲讲ReentrantReadWriteLock可重入读写锁,它不仅是读写锁的实现,而且支持可重入性. 聊聊高并发(十五)实现一个简单的读-写锁(共享-排他锁) 这篇讲了怎样模拟一个读写锁. 可重 ...
- 【Java学习笔记之二十四】对Java多态性的一点理解
面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...
- 聊聊高并发(二十四)解析java.util.concurrent各个组件(六) 深入理解AQS(四)
近期总体过了下AQS的结构.也在网上看了一些讲AQS的文章,大部分的文章都是泛泛而谈.又一次看了下AQS的代码,把一些新的要点拿出来说一说. AQS是一个管程.提供了一个主要的同步器的能力,包括了一个 ...
- 学JAVA第十六 天,JAVA多态
今天老师讲了多态的使用 多态是同一个行为具有多个不同表现形式或形态的能力. 多态的优点: 1. 消除类型之间的耦合关系 2. 可替换性 3. 可扩充性 4. 接口性 5. 灵活性 6. 简化性 我个 ...
- 微软Visual Studio二十周年:VS2017于3月7日发布
二十年前的今天,微软正式发布Visual Studio 97.如今二十年已经过去,微软宣布全新的Visual Studio 2017即将在美国当地时间3月7日正式发布. VS97是Visual Stu ...
- 【Java学习笔记之二十六】深入理解Java匿名内部类
在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意 ...
- JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题
JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...
随机推荐
- ES6 new syntax of let and const (one)
variable declarations : let, const,and block scope why we redefine the way about declarations? funct ...
- [LeetCode] Pour Water 倒水
We are given an elevation map, heights[i] representing the height of the terrain at that index. The ...
- Office 365 应用开发的 .NET Core 模板库
概述 前不久我写过一篇文章拥抱开源,Office 365开发迎来新时代,给大家介绍了Office 365开发的典型场景是如何支持开源平台的:Office 365通过Microsoft Graph,以R ...
- hdu 5750 Dertouzos 素数
Dertouzos Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...
- ●UOJ 131 [NOI2015] 品酒大会
题链: http://uoj.ac/problem/131 题解: 网上大多数的方法都是用并查集维护.这里呢,给出另一种自己YY的解法(但实际上本质差不多吧): 后缀数组,RMQ,单调栈 1).预处理 ...
- UVA12186
给出一个树状关系图,公司里只有一个老板编号为0,其他人员从1开始编号.除了老板,每个人都有一个直接上司,没有下属的员工成为工人. 工人们想写一份加工资的请愿书,只有当不少于员工的所有下属的T%人递交请 ...
- bzoj4596[Shoi2016]黑暗前的幻想乡 Matrix定理+容斥原理
4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 464 Solved: 264[Submit][Sta ...
- 智能优化算法对TSP问题的求解研究
要求: TSP 算法(Traveling Salesman Problem)是指给定 n 个城市和各个城市之间的距离,要 求确定一条经过各个城市当且仅当一次的最短路径,它是一种典型的优化组合问题,其最 ...
- 获取X天后的日期
import java.util.Calendar; import java.util.Date; public class main { public static void main(String ...
- Java线程池使用和常用参数
多线程问题: 1.java中为什么要使用多线程使用多线程,可以把一些大任务分解成多个小任务来执行,多个小任务之间互不影像,同时进行,这样,充分利用了cpu资源. 2.java中简单的实现多线程的方式 ...