Scala从零开始:使用Intellij IDEA写hello world

分类: Scala |2014-05-23 00:39 |860人阅读

 

引言

在之前的文章中,我们介绍了如何使用Scala IDE也就是eclipse中集成的Scala开发插件来进行Scala语言程序的开发,在使用了一段时间之后,发现eclipse对Scala的支持并不是很好。用户体验比较差,比如联想速度比较慢等。由于在公司一直使用的Scala开发工具是Intellij IDEA(好吧,其实我使用Scala IDE的目的就是想试一下这两个各有什么优缺点),各方面感觉还不错,所以在此介绍一下这个开发环境。

Intellij IDEA是jetbrain开发的一个IDE,用于Java、Groovy、Scala等的开发,自称是当前最智能的Java开发环境(The most intelligent IDE for Java platform),相对于其他开发工具来说,其对于代码检视、上下文理解、cvs/ant/maven/git的支持都比较完善。

好了,正式进入IDEA的介绍。

安装和配置

在IDEA的官方网站()下载安装包,目前版本是13.1.4(2014/5/21),选择你适合的系统,这里以windows系统为例。然后选择Ultimate或者Community版本,很明显可以看出前者包含更多的功能但是收费(当然现在提供30天的免费试用),后者是社区版并且开源而且license是Apache 2.0。作为底层的穷逼程序猿我还是选择Community版本来演示吧。

下载会得到一个.exe执行文件,当然,双击安装即可,中间会提示选择安装路径blahblah,这里不做赘述。

安装之后打开,首先会弹出一个tab,如图:

这里会让你选择接下来的操作,是进行环境配置还是新建工程还是导入工程,这里我们选新建工程:

从这里看到,并没有新建Scala工程的选项,这说明要支持Scala开发,IDEA需要进行一定的配置。所以我们退回,选择Configure项,然后选Plugins:

点集左下角的“Install Intellij Plugins...”,出现以下界面,显示了当前可以安装的插件:

找到Scala,点集右侧边栏中的Install Plugin按钮,骚等一会,安装就完成啦。

当然有的时候因为网络不好或者其他的原因(你懂的),也可能出现让你长时间等待或者报connect timeout的错误。这时候你需要自己手动下载插件安装包(http://plugins.jetbrains.com/plugin/?id=1347),蓝后在上一个界面中选择“Install plugin from disk”,在弹出的标签里选择你存放插件的路径,点OK即可。

新建工程

安装完Scala插件之后,回到新建工程的地方,就可以看到有新建Scala工程的选项了。我们选择No-SBT,从普通的项目开始。

在这里配置你的项目名称、存放路径、JDK路径、Scala Home、模块路径及其他,点击创建即可打开新建的工程。在这个地方可以得出搭建Scala开发环境需要在本机上安装JDK和Scala。

我们可以看到现在还没有源文件,只有一个存放源文件的目录src以及存放工程其他信息的杂项,在src上右键创建包com.doggie以及类HelloWorld,当然我们这里需要创建的是入口类,即Object。

像这篇文章(http://blog.csdn.net/asongoficeandfire/article/details/21490101)里一样,写一个main方法并添加一条打印语句:

在代码编辑器里右键,上下文菜单中有run HelloWorld的选项,点击即可运行我们的代码啦!

打包

我们知道Scala代码编译得到的类也是运行在JVM上的,那么IDEA能否支持打包呢?当然必须非常支持啊。需要点击菜单栏里的File->Project Structure或者点击右侧相应的图标均可进入项目的配置界面,在左侧选择Artifacts,点击绿色的+号,即新建一个打包操作,选中新建的unnamed打包项之后,可以配置jar包的名称,输出路径,还可以选择jar包中包含的东东,当然这里我们选择最简单的,即编译输出。

配置完成后,我们就可以在菜单栏中选择Build->Build Artifacts...,然后使用Build、ReBuild等命令打包啦。打包完成后会在状态栏中显示“Compilation completed successfully...”的信息,去jar包输出路径下查看,就能拿到我们的jar包啦。

这个jar包使用方式和Java导出的jar包完全相同,只是需要在运行时将Scala中的scala-compiler.jar加入到CLASSPATH中。

这里介绍了Eclipse Scala IDE集成环境的使用,你可以对比一下。

 

阅读(252)Coursera公开课Functional Programming Principles in Scala习题解答:Week 3

引言这周的作业其实有点复杂,需要完成的代码有点多,有点绕。本周的课程主要讲了Scala中的类、继承和多态,作业也很好的从各个方面考察了课程的内容。作业题目工程主要需要完成的部分是TweetSet.scala这个文件中的内容,比较新潮,都是和推特相关。其中定义了一个抽象类TweetSet,以及其的两个子类Empty、NonEmpty,表示空集和非空集。非空集使用二叉树来表示,二叉树的根是一个Tw...

2014-05-24 21:38

 
 
 
 

阅读(861)Scala从零开始:使用Intellij IDEA写hello world

引言在之前的文章中,我们介绍了如何使用Scala IDE也就是eclipse中集成的Scala开发插件来进行Scala语言程序的开发,在使用了一段时间之后,发现eclipse对Scala的支持并不是很好。用户体验比较差,比如联想速度比较慢等。由于在公司一直使用的Scala开发工具是Intellij IDEA(好吧,其实我使用Scala IDE的目的就是想试一下这两个各有什么优缺点),各方面感觉...

2014-05-23 00:39

 
 
 
 

阅读(386)Coursera公开课Functional Programming Principles in Scala习题解答:Week 2

引言OK.时间很快又过去了一周,第一周有五一假期所以感觉时间绰绰有余,这周中间没有假期只能靠晚上加周末的时间来消化,其实还是有点紧张呢!后来发现每堂课的视频还有对应的课件(Slide)、字幕(subtitles)可以下载,这样下载视频学习和在线学习就只差课程中间的Exercise了Week 2主要讲函数,函数在Scala里是first-class citizen,可以在任意域内出现,这门课...

2014-05-14 00:21

 
 
 
 

阅读(593)Coursera公开课Functional Programming Principles in Scala习题解答:Week 1

引言工作之余参加了Coursera的公开课Functional Programming Principles in Scala,这个课是第三次开讲了,讲师仍然是Scala的祖师爷Martin Odersky先生。个人认为学习公开课最大的阻碍在于有些老师的口音实在是……不忍直视,比如最早在Coursera开授公开课的Andrew Ng(当然他现在是小老板了)。幸好Martin大爷的英文口音不是很...

2014-05-08 01:07

 
 
 
 

阅读(372)Scala从零开始:函数参数的传名调用(call-by-name)和传值调用(call-by-value)

引言Scala的解释器在解析函数参数(function arguments)时有两种方式:先计算参数表达式的值(reduce the arguments),再应用到函数内部;或者是将未计算的参数表达式直接应用到函数内部。前者叫做传值调用(call-by-value),后者叫做传名调用(call-by-name)。package com.doggieobject Add { def...

2014-03-23 22:58

 
 
 
 

阅读(258)Scala从零开始:中缀表示法和后缀表示法

在Scala中有很多为了方便而创造的语法规则,使用这些语法规则可以创建更简洁的语法,使编程更加有效。今天我们来看两个常用的语法规则,即中缀表示法(infix syntax)和后缀表示法(suffix syntax)。中缀表示法这两个语法规则都是针对方法(methed)来说的,所以在开始,我们创建两个类:package com.doggieobject Bartender {...

2014-03-19 23:44

 
 
 
 

阅读(1137)Scala从零开始:使用Scala IDE写hello world

简介在上一篇文章中,我们阐述了Coursera使用Scala的理由,以及Scala的优缺点。说多不如少练,我们今天就开始练习如何使用Scala编程。虽然Scala是一门比较新的语言,但是很多机构都为其开发了IDE或者集成插件,比较流行的有Eclipse、IntelliJ以及Netbeans。今天我们使用集成了Scala IDE插件的Eclipse进行代码的编写。IDE下载及安装...

2014-03-19 01:12

 
 
 
 

阅读(369)选择Scala的理由?

先来张镇宅神图:火热的网上公开课网站Coursera采用了Scala来作为他们的首选编程语言。最初这个网站是由几个Stanford的学生用PHP写的,后来随着业务扩展,团队开始寻找合适的语言来搭建平台。在尝试过了包括Python和Go在内的许多种框架后,Coursera决定采用Scala以及使用Scala编写的web框架Play Framework,原因有以下几条:...

2014-03-14 00:28

声明:本文为原创,禁止用于任何商业用途,转载请注明出处:http://blog.csdn.net/asongoficeandfire/article/details/26412493

Scala从零开始:使用Intellij IDEA写hello world的更多相关文章

  1. 从零开始编写IntelliJ IDEA插件

    写Java代码的时候,经常会涉及到重复性的操作,这个时候就会想要是有这样一个插件就好了,如果是大家都会遇到的场景,IDE或许已经提供了,再不然也有可能有人编写了相关的插件.要是这个操作是你们的编码环境 ...

  2. 从零开始---控制台用c写俄罗斯方块游戏(1)

    从零开始---控制台用c写俄罗斯方块游戏(1) 很少写博文,一来自身知识有限,二来自己知道,已经有很多这样的博文了,三就是因为懒,文笔也一般,四来刚出来工作,时间也不多 之所以写这篇博文,是因为应群里 ...

  3. Scala刮:使用Intellij IDEA写hello world

    介绍 在前面的文章中,,我们介绍了如何使用Scala IDE那是,eclipse集成Scala开发插件Scala开发语言程序.使用一段时间后,.发现eclipse正确Scala支持不是很好.用户体验差 ...

  4. Scala从零開始:使用Intellij IDEA写hello world

    引言 在之前的文章中,我们介绍了怎样使用Scala IDE也就是eclipse中集成的Scala开发插件来进行Scala语言程序的开发,在使用了一段时间之后,发现eclipse对Scala的支持并非非 ...

  5. Ubuntu环境下安装Scala以及安装IntelliJ Scala插件(Plugin)

    一.Scala介绍 1.结合Spark处理大数据 这是Scala的一个主要应用,而且Spark也是那Scala写的. 2.Java的脚本语言版  可以直接写Scala的脚本,也可以在.sh直接使用Sc ...

  6. 用scala的actor并发编程写一个单机版的WorldCount

    前言:最近一段时间比较忙,也是比较懒了吧,好长时间没写博客了,新的一年到来,给自己一个小目标,博客坚持写下去,分享一下这历程!废话不多说,开始正题咯(希望大家喜欢!) 首先这算是一个scala程序的入 ...

  7. 从零开始---控制台用c写俄罗斯方块游戏(2)

    上回说到下移的问题,这篇就说一下刷新的问题 我们控制台输出一般都是一行一行的输出,所以,在输出屏幕的时候,我们一个画面闪到另一个画面的效果 我刚开始弄的是用system("CLS" ...

  8. 用intellij idea 写第一个Java程序

    Java小白,还不怎么会eclipse,只会在命令行用javac编译并java运行编译后的类. 英文还不好orz 发现创建项目后,能build但就是不能run... 找了半天教程没找着,去官网溜了一下 ...

  9. intellij idea 写 Helloworld

    http://www.jetbrains.com/idea/webhelp/creating-and-running-your-first-java-application.html Creating ...

随机推荐

  1. 初识 Cloudera Impala

    Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据.已有的Hive系统尽管也提供了SQL语义,但因为Hive底层 ...

  2. VC和gcc在保证功能static对线程安全的差异变量

    VC和gcc不同,不能保证静态变量的线程安全性.这就给我们的程序带来了非常大的安全隐患和诸多不便.这一点应该引起我们的重视!尤其是在构造函数耗时比較长的时候.非常可能给程序带来意想不到的结果.本文从測 ...

  3. Json.NET提供依赖注

    Json.NET提供依赖注 [.NET] 使用Json.NET提供依赖注入功能(Dependence Injection) 前言 在一些小型项目的开发情景里,系统不需要大型DI Framework所提 ...

  4. 如何有效地记录 Java SQL 日志(转)

    在常规项目的开发中可能最容易出问题的地方就在于对数据库的处理了,在大部分的环境下,我们对数据库的操作都是使用流行的框架,比如 Hibernate . MyBatis 等.由于各种原因,我们有时会想知道 ...

  5. MIFARE系列7《安全》

    飞利浦的MIFARE卡因为它的高安全性在市场上得到广泛应用,比方我们乘车用的公交卡,学校和企业食堂的饭卡等等.它每一个扇区有独立的密匙(6个字节的password),在通信过程中首先要验证密匙才干读写 ...

  6. uva 10228 - Star not a Tree?(模拟退火)

    题目链接:uva 10228 - Star not a Tree? 题目大意:给定若干个点,求费马点(距离全部点的距离和最小的点) 解题思路:模拟退火算法,每次向周围尝试性的移动步长,假设发现更长处, ...

  7. OpenWrt arp 命令发布

    arp命令是用来查看mac与ip在消息路由器缓存表.这是一个基本的介绍了一下我就不说了. 但今天我的同事通过arp.可是在shell脚本就回显示没有此命令,我当时也感到非常费解. 于是乎.做了例如以下 ...

  8. 我国常用的坐标系统WKID列表[转]

    原文链接:http://blog.sina.com.cn/s/blog_62f9ffcd0102uw8x.html Geographic Coordinate System 地理坐标 4214  GC ...

  9. H264 编解码器架构简单

    看完后H264/AVC 编解码器演示,头脑是刚刚离开以下三个: 1.H264并且不明白如何指定的编解码器来实现,仅定义了一个编码视频位流的语法.和比特流进行解码,这与MPEG 类似. 2.H264而一 ...

  10. JavaScript闭包的一些理解

    原文:JavaScript闭包的一些理解 简单一点的说:闭包就是能够读取其他函数内部变量的函数.那如何实现读取其它函数内部变量呢,大家都知道在JavaScript中内部函数可以访问其父函数中的变量,那 ...