【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 ...
随机推荐
- [LeetCode] Maximum Width of Binary Tree 二叉树的最大宽度
Given a binary tree, write a function to get the maximum width of the given tree. The width of a tre ...
- Python网络爬虫笔记(二):链接爬虫和下载限速
(一)代码1(link_crawler()和get_links()实现链接爬虫) import urllib.request as ure import re import urllib.parse ...
- WOJ 124. Football Coach 网络流
Problem 1124 - Football Coach Description It is not an easy job to be a coach of a football team. Th ...
- ●POJ 2079 Triangle
题链: http://poj.org/problem?id=2079 题解: 计算几何,凸包,旋转卡壳 复杂度O(N^2),(O(N)什么的就不说了,我觉得我看过的O(N)方法正确性都有问题,虽然有些 ...
- 2017ACM/ICPC广西邀请赛-重现赛 1004.Covering
Problem Description Bob's school has a big playground, boys and girls always play games here after s ...
- [bzoj1901]动态区间k大
定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是多少(1≤k≤j-i+1) ...
- 性能优化之mysql优化——慢查日志的开启方式和存储
-- MySQL优化 -- mysql 慢查日志的开启方式和存储 -- 1) 查看mysql是否开启慢查询日志 SHOW VARIABLES LIKE 'slow_query_log'; -- 2) ...
- Java获取随机数的3种方法
最小值---最大值(整数)的随机数 方法1 (数据类型)(最小值+Math.random()*(最大值-最小值+1)) 例: (int)(1+Math.random()*(10-1+1)) / ...
- ajaxStart()和ajaxStop()
Jquery中当一个Ajax请求启动时,并且没有其他未完成的Ajax请求时,将调用ajaxStart()方法.同样,ajaxStop()方法则是在所有Ajax请求都完成时调用.这些方法的参数都是一个函 ...
- flask+apscheduler+redis实现定时任务持久化
在我们开发flask的时候,我们会结合apscheduler实现定时任务,我们部署到服务器上,会不会遇到这样的问题,每次我们部署后,我们重启服务后,原来的定时任务都需要重启,这样对我们经常迭代的项目肯 ...