java与.net比较学习系列(1) 开发环境和常用调试技巧
最近因为公司项目要由.net平台转到java平台的原因,之前一直用.net的我不得不开始学习java了,刚开始听到说要转java的时候很抗拒,因为我想专注在.net平台上,不过这样也并不完全是坏事,通过接触java开发也许能拓展我的开发思想和知识面,所以这也许是个学习java的机会。
因为之前从来没有做过java开发,所以现在不得不从最基础的开始,而且因为做.net已经有几年了,习惯了VS的良好的操作体验,所以刚开始接触Eclipse有很多的不适应。这个系列我想通过与.net比较的方式来学习,一来分清java与c#的区别,二来也许能加深对.net的理解,第三是希望想转java的朋友能通过这个系列少走弯路。
工欲善其事,必先利其器。所以这个系列的第一篇我想总结的是它们开发环境以及常用的调试技巧的比较。我想从以下几点来进行总结。
1,开发工具
2,常用操作快捷键
3,常用调试技巧
一,开发工具
.net的开发IDE工具就不用我多说了,就是“全球最牛的IDE” Visual Studio(下称VS),而java开发一般选择Eclipse,当然Eclipse是免费的。下面通过一张图来说明它们之间界面和布局上的差异。
VS:

Eclipse:

我们可以看到,从界面布局上,两者没有太多差异,只是VS的项目管理在右边,而Eclipse的项目管理在左边,当然,这些窗口也是可以拖拽的,依据自己的操作习惯来。
二,常用操作快捷键
为了对比更加清晰,下面我用一张表格来分别列出VS和Eclipse常用操作的快捷键。
注:我这里用的VS版本是2010,Eclipse版本是Juno SR2
这份表格是基于我之前写的一篇博客进行提炼修改的,原文章地址:提高vs操作效率,vs 2008与vs 2010快捷键总结。各位朋友如果有一些好的操作技巧也欢迎提出。
| Visual Studio | Eclipse | 操作 | |
| 编辑 | |||
| CTRL+E+C | CTRL+/ | 注释,注释选中的代码(如果没有选中任何行,则默认注释当前行代码) | |
| CTRL+E+U | CTRL+/(再按) | 取消注释,取消注释选中的代码 | |
| CTRL+E+D | CTRL+SHIFT+F | 格式化整个文档 | |
| CTRL+J | ALT+/ | 列出成员 | |
| CTRL + SHIFT + 空格 | ALT+/ | 提示鼠标所在方法的参数类型和个数 | |
| CTRL+M+L | CTRL+O | 快速OutLine | |
| CTRL+. | 不适用 | 自动using命名空间 | |
| 导航 | |||
| F12 | F3 | 转到定义 | |
| CTRL + TAB | CTRL+E | 快速切换活动窗口 | |
| CTRL + SHIFT + F | CTRL+F | 显示在文件中查找和替换对话框 | |
| SHIFT+ALT+ENTER | CTRL+M | 全屏无干扰模式 | |
| CTRL+(→或←) | 同VS | 以单词为单位进行左,右跳转 | |
| SHIFT+CTRL+(↑或↓) | 暂无 | 跳转到该单词上次或下次出现的地方 | |
| CTRL+SHIFT+] | CTRL+SHIFT+P | 匹配括号移动(包括(),{},[],””) | |
| SHIFT+F12(查找所有引用) | CTRL+T | 转到接口的实现类 | |
| 调试 | |||
| F5 | F11 | 调试运行 | |
| CTRL+F5 | CTRL+F11 | 非调试运行 | |
| F6 | 不适用 | 编译整个解决方案 | |
| SHIFT+F6 | 不适用 | 编译当前选择的工程 | |
| SHIFT+F5 | CTRL+F2 | 停止调试 | |
| F9 | CTRL+SHIFT+B(break) | 插入或取消断点 | |
| CTRL+SHIFT+F9 | 暂无 | 取消所有断点 | |
| F10 | F6 | 单步执行,但直接执行函数中调用部分而不分步 | |
| F11 | F5 | 单步执行,并且单步执行函数中调用部分 | |
| SHIFT+F11 | F7(继续运行为F8) | 执行当前函数剩余部分代码 | |
| CTRL+F10 | CTRL+R | 运行到光标处 |
另外,Eclipse有一些自己独特的快捷键,也非常好用,如下:
CTRL+SHIFT+R(resource):快速打开资源
ALT+SHIFT+R(rename):快速重命名方法和属性
CTRL+.和CTRL+1:定位到错误及快速修改
三,常用调试技巧
之所以把调试技巧单独列出来总结,是因为调试技巧对于我们程序员来说非常重要,运用得好的话可以大大提高我们的开发效率。其实对于VS的调试技巧,我相信我们做.net开发的大部分都已经很熟悉了,下面我把VS中非常常用的几个调试技巧拿出来与Eclipse进行比较,看看Eclipse有没有相应的解决方法。
1,断点
说起调试,首先肯定是设置断点了,所以断点是所有调试的基础。当然断点又分很多种不同的类型,比较常用的就是条件断点和断点过滤器了。首先来看普通断点吧。
1)普通断点
设置断点,VS为F9,而Eclipse为CTRL+SHIFT+B(break)

命中断点后,接下来我们可以选择F10单步运行,F11进入调用函数内部,或Shift+F11从调用函数返回到函数调用处。而对于Eclipse,单步运行是F6,进入调用函数内部是F5,返回到函数调用处是F7。
2)条件断点
条件断点一般用在for循环中,如下图:


3) 断点过滤器
断点过滤一般用在调试多线程程序的时候,能过断点过滤我们可以指定调试哪个线程,如下图:


2,运行到指针
这个调试技巧也非常有用,当我们在调试一个很长的方法,我们不关心中间的逻辑,我希望断点直接运行到某一行的时候,这个技巧就派上用场了。如下图。
注意,这个技巧在VS中是快捷键CTRL+F10,而在Eclipse中我还没有发现怎么去实现这个技巧,希望知道的朋友可以补充一下。


3,即时窗口
这个也用得非常多,它即可以查看变量的值,也可以直接在里边写代码执行。如下图。

不过,Eclipse里的即时窗口没有VS的好用。
4,附加进程
附加进程有两个好处,第一,提高调试效率,我一般习惯先以非调试模式运行(VS中快捷键是CTRL+F5),此时页面已经打开,等到想调试的时候就选择附加进程进行调试,不想调试的时候我停止调试就行了,这样比按F5要快很多。第二个好处是,当程序已经发布了,本地也有源代码的情况下,那么就可以直接附加到进程就可以调试了。下面是图示。
注:Eclipse中我还不知道怎么实现这个功能,希望知道的朋友补充一下。

5,数据提示
当我们在调式一段程序,需要反复查看某个变量的值的时候,我们可以把这个变量钉在屏幕上,而且,我们还可以临时去修改变量的值,这对我们去模拟一些BUG的时候非常有用。
注:Eclipse中还不知道怎么弄,好像在变量声明的地方无法设置断点,希望熟悉的朋友补充一下。

另外,这篇文章参考了以下文章:
文章出自:http://www.cnblogs.com/mcgrady/p/3389441.html
java与.net比较学习系列(1) 开发环境和常用调试技巧的更多相关文章
- java与.net比较学习系列开发环境和常用调试技巧常用操作快捷键
调试 F5 F11 调试运行 CTRL+F5 暂无 非调试运行 F6 不适用 编译整个解决方案 SHIFT+F6 不适用 编译当前选择的工程 SHIFT+F5 CTRL ...
- Node.js实战项目学习系列(2) 开发环境和调试工具
前言 上一节让我们对Node.js有一个初步的了解,那么现在可以开始正式学习下Node.js的开发了,但是任何一门语言要设计到开发,就必须先学习开发环境以及调试.本文将主要讲解这些内容. 本文涉及到的 ...
- Android+Jquery Mobile学习系列(1)-开发环境
开发环境是老生常谈的问题了,网上有很多关于Android环境安装的文章,我这里也就简单说明一下,不做过多分析. 想了解详细的安装说明,可以参见[百度经验] Java环境安装直接跳过,说一下Androi ...
- [eShopOnContainers 学习系列] - 00 - 开发环境需求
开发环境需求 https://github.com/dotnet-architecture/eShopOnContainers/wiki/00.-Dev-machine-requirements 我的 ...
- Android开发--环境搭建和调试技巧
一:环境搭建 (1)我使用的环境是:window8+Java SDK+Eclipse+Android SDK+ADT 安装步骤:Java SDK-->Eclipse--->ADT---&g ...
- Java I/O系统学习系列二:输入和输出
编程语言的I/O类库中常使用流这个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象.“流”屏蔽了实际的I/O设备中处理数据的细节. 在这个系列的第一篇文章:<< ...
- MyBatis学习系列一之环境搭建
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 学习一个新的知识,首先做一个简单的例子使用一下,然后再逐步深入.MyBat ...
- Redis学习系列一Linux环境搭建
1.简介 Redis是互联网技术架构中在存储系统中用的最广泛的中间件,是中高级后端工程师技术面试中面试官最喜欢问的工程技能之一.所以Redis是.Net技术开发必须掌握的技能之一.所以通过这个系列的随 ...
- Django:学习笔记(1)——开发环境配置
Django:学习笔记(1)——开发环境配置 Django的安装与配置 安装Django 首先,我们可以执行python -m django --version命令,查看是否已安装django. 如果 ...
随机推荐
- 关于时间的操作(JavaScript版)——依据不同区时显示对应的时间
如今项目基本上告一段落了,难得有一定的闲暇,今天利用数小时完毕了一个功能模块--依据不同区时显示对应的时间,这方面网上基本没有现成的样例,如今将代码粘贴例如以下: <!DOCTYPE HTML ...
- ZigBee心电传输(一)
第一次接触模拟的东西哈,也算是一次新的学习旅程以及对ZigBee的再一次探索吧. 首先是方案制定,以及采用芯片AD8232,这样节省了不少时间,把模拟的东西都搬到数字上了,不过还是需要学习不少模电知识 ...
- 蓝桥杯 BASIC 24 龟兔赛跑预測(模拟)
[思路]:模拟.注意一个是在兔子歇息的时间乌龟可能到达了.刚開始没考虑WA80%. [AC代码]: #include <iostream> #include <algorithm&g ...
- [Regex Expression] Use Shorthand to Find Common Sets of Characters
In this lesson we'll learn shorthands for common character classes as well as their negated forms. v ...
- iOS中的界面多选功能--(UICollectionView)
文/Jacob_Pan(简书作者)原文链接:http://www.jianshu.com/p/9d28ebd0f5a2著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 最近做项目接触了一 ...
- JavaScript 函数基础
1. JavaScript 函数基础 1. 定义方法 2. 函数的调用方法 3. 函数方法 apply : 将函数作为数组的方法来调用 将参数以数组形式传递给该方法 call : 将函数作为对象的 ...
- React初步
今天整理一下自己关于react的学习笔记. 什么是React? 学习某一个框架首先得知道这个框架是干什么的,它的特点是什么,有哪些优点和缺点. React有4个特点 组件化 虚拟DOM 单项数据流 j ...
- C# byte[]与char[]、string与char[]、byte[] 与 string 互转
1. byte array -> char array Byte[] b=new byte[5]{0x01,0x02,0x03,0x04,0x05}; Char[] c=Encoding.AS ...
- java文件读写的两种方式
今天搞了下java文件的读写,自己也总结了一下,但是不全,只有两种方式,先直接看代码: public static void main(String[] args) throws IOExceptio ...
- NDK编译Python2.7.5
[背景] 网上有一些ndk编译python的做法,但按照教程做总是不成功,可能是环境版本不一样,导致很多地方的配置都不成功. 网上的教程大多只有做法,没有解释,即使按照教程编译成功,很多细节都不知道为 ...