软件研发 --- hello world 项目 之 兼容Java scala
https://gitee.com/null_465_7266/scala4helloworld
Scala Hello World 项目
这是一个完整的Scala Hello World项目,展示了Scala编程语言的核心特性和语法。
项目简介
Scala是一种运行在JVM上的多范式编程语言,完美融合了面向对象编程和函数式编程。本项目包含:
- 基本语法演示(变量、类型推断、字符串插值)
- 丰富的数据类型(List、Map、Set、Tuple等)
- 函数式编程特性(高阶函数、Lambda表达式)
- 控制流(if表达式、match表达式、for推导式)
- 面向对象编程(类、特质、案例类)
- 错误处理(Try、Option类型)
- 详细的中文注释
️ 环境要求
必需组件
- Java 8 或更高版本 - Scala运行在JVM上
- Scala 2.13.x 或 3.x - Scala编译器和运行时
推荐工具
- sbt (Scala Build Tool) - 项目构建工具
- IntelliJ IDEA + Scala插件 - 集成开发环境
- VS Code + Metals插件 - 轻量级编辑器
安装指南
1. 安装Java
Windows
# 使用Chocolatey安装
choco install openjdk
# 或下载安装包
# 访问: https://adoptium.net/
macOS
# 使用Homebrew安装
brew install openjdk
# 或使用SDKMAN
curl -s "https://get.sdkman.io" | bash
sdk install java
Linux (Ubuntu/Debian)
# 安装OpenJDK
sudo apt update
sudo apt install openjdk-11-jdk
# 验证安装
java -version
2. 安装Scala
方法1: 使用SDKMAN(推荐)
# 安装SDKMAN
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
# 安装Scala
sdk install scala
# 验证安装
scala -version
方法2: 使用包管理器
Windows (Chocolatey):
choco install scala
macOS (Homebrew):
brew install scala
Linux (Ubuntu/Debian):
sudo apt install scala
方法3: 手动安装
- 访问 Scala官网
- 下载对应平台的安装包
- 解压并添加到PATH环境变量
3. 安装sbt(可选但推荐)
使用SDKMAN
sdk install sbt
使用包管理器
Windows:
choco install sbt
macOS:
brew install sbt
Linux:
# 添加sbt仓库
echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list
curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo apt-key add
sudo apt update
sudo apt install sbt
编译和运行
方法1: 直接使用Scala编译器(最简单)
# 编译Scala文件
scalac HelloWorld.scala
# 运行编译后的程序
scala HelloWorld
方法2: 使用Scala脚本模式
# 直接运行(无需预编译)
scala HelloWorld.scala
方法3: 使用sbt(推荐用于项目开发)
首先创建sbt项目结构:
# 创建目录结构
mkdir -p src/main/scala
mv HelloWorld.scala src/main/scala/
# 使用sbt运行
sbt run
方法4: 在IDE中运行
IntelliJ IDEA
- 安装Scala插件
- 导入项目或创建新的Scala项目
- 将HelloWorld.scala放入src/main/scala目录
- 右键点击文件选择"Run HelloWorld"
VS Code
- 安装Metals插件
- 打开项目文件夹
- 使用Ctrl+Shift+P打开命令面板
- 选择"Metals: Run main class"
预期输出
运行程序后,你应该看到类似以下的输出:
欢迎来到Scala世界!
Scala是运行在JVM上的多范式编程语言,融合了面向对象和函数式编程
=== Scala基本语法演示 ===
Hello, World!
Hello, Scala开发者!
数字: 42, π: 3.14159, Scala很棒: true
=== Scala数据类型演示 ===
姓名: 张三, 年龄: 25, 身高: 175.5cm, 等级: A
编程语言: List(Scala, Java, Python, JavaScript)
数字数组: 1, 2, 3, 4, 5
个人信息: Map(name -> 李四, city -> 上海, job -> Scala开发工程师)
唯一数字: Set(1, 2, 3)
坐标: x=10.5, y=20.3
=== Scala函数演示 ===
你好, Scala学习者!
你好, 开发者!
Hello, Developer!
5 + 3 = 8
5 × 3 = 15
原始列表: List(1, 2, 3, 4, 5)
翻倍后: List(2, 4, 6, 8, 10)
偶数: List(2, 4)
总和: 15
=== Scala控制流演示 ===
分数: 85, 评级: 良好
第3天是: 星期三
倒计时:
5...
4...
3...
2...
1...
开始!
平方数: Vector(1, 4, 9, 16, 25)
斐波那契数列前10项:
0 1 1 2 3 5 8 13 21 34
=== Scala面向对象编程演示 ===
大家好,我是小明,今年25岁
小明过生日了!现在26岁
复制的人: 大家好,我是小明,今年30岁
开发者信息: 李华 - 3年经验,掌握: Scala, Java, Python
正在用Scala, Java, Python编程
学会了新语言: Kotlin
李华获得了更多经验!现在有4年经验
=== Scala错误处理演示 ===
10 ÷ 2 = 5.0
错误: 除零操作!
查找人员:
找到了: 李四
未找到该人员
Scala Hello World 程序运行完成!
继续探索Scala的更多特性吧!
故障排除
常见问题
"scala: command not found"
- 确保Scala已正确安装并添加到PATH环境变量
- 运行
scala -version验证安装
"java: command not found"
- 需要先安装Java JDK
- 确保JAVA_HOME环境变量设置正确
编译错误
- 检查Scala版本兼容性
- 确保代码语法正确
- 检查文件编码是否为UTF-8
内存不足错误
# 增加JVM内存
export JAVA_OPTS="-Xmx2g"
scala HelloWorld
中文字符显示问题
# 设置字符编码
export JAVA_OPTS="-Dfile.encoding=UTF-8"
学习资源
下一步学习
- 学习Scala的高级特性(隐式转换、类型系统)
- 探索函数式编程概念(Monad、Functor)
- 学习Akka框架进行并发编程
- 尝试Play Framework进行Web开发
- 学习Apache Spark进行大数据处理
️ 项目结构
scala-hello-world/
├── HelloWorld.scala # 主程序文件(包含详细注释)
├── build.sbt # sbt构建配置文件
├── project/ # sbt项目配置目录
│ └── build.properties # sbt版本配置
├── README.md # 详细文档
├── QUICKSTART.md # 快速开始指南
├── Makefile # 编译运行脚本
├── .gitignore # Git忽略文件配置
├── install-scala-windows.bat # Windows Scala安装脚本
└── install-scala-unix.sh # Linux/macOS Scala安装脚本
许可证
本项目仅用于学习目的,可自由使用和修改。
Happy Coding with Scala!
软件研发 --- hello world 项目 之 兼容Java scala的更多相关文章
- Akka.NET是Java/Scala 流行框架Akka的一个 .NET 开源移植
Akka.NET v1.0 已发布,支持Mono Akka.NET 是Java/Scala 流行框架Akka的一个 .NET 开源移植.可用于构建高并发,分布式和容错事件驱动的应用在 .NET 和 M ...
- 在IntelliJ IDEA中创建和运行java/scala/spark程序
本文将分两部分来介绍如何在IntelliJ IDEA中运行Java/Scala/Spark程序: 基本概念介绍 在IntelliJ IDEA中创建和运行java/scala/spark程序 基本概念介 ...
- docker 通过commit方法创建镜像(Tomcat+Java+Scala)
前一阵试了试写Dockerfile创建docker image,但有时全靠Dockerfile写实在有些难度,退而求其次试一试使用commit来创建镜像: 想了想干脆创建一个Java+Scala+To ...
- idea中编译项目报错 java: javacTask: 源版本 1.8 需要目标版本 1.8
问题如上面所叙: > idea中编译项目报错 java: javacTask: 源版本 1.8 需要目标版本 1.8 解决方案: > Setting->Compiler->Ja ...
- 关于SpringMVC项目报错:java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/xxxx.xml]
关于SpringMVC项目报错:java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/xxxx ...
- Java Web项目中缺少Java EE 6 Libraries怎么添加
Java Web项目中缺少Java EE 6 Libraries怎么添加 具体步骤如下: 1.项目名称上点击鼠标右键,选择"Build Path-->Configure Build P ...
- 项目报错java.lang.ClassNotFoundException: org.common.SessionListener
现象:项目报错java.lang.ClassNotFoundException: org.common.SessionListener,并且myeclipse左侧Package Explorer中项目 ...
- Web项目--------原Oracle数据库的项目同时兼容MySql
原Oracle数据库的项目同时兼容MySql步骤: (一)修改资源配置文件applicationContext-dataSource.xml的数据库连接 Oracle数据库中加上from dual的原 ...
- 解决 Visual Studio 2017 打开项目提示项目不兼容
这应该算是VS2017的一个bug,昨天做好的.net core项目还能好好如初,今天打开就提示项目不兼容,未能加载...... 解决办法也是超级简单,但是往往越简单的办法越是想不到: 右键解决方案, ...
- Tomcat部署项目时出错java.lang.IllegalStateException: ContainerBase.addChild: start:org.apache.catalina.Life
Tomcat部署项目时出错java.lang.IllegalStateException: ContainerBase.addChild: start:org.apache.catalina.Life ...
随机推荐
- Unity点到线段的最短距离
抄的Unity的源码 HandleUtility.DistancePointLine 是UnityEditor代码,源码如下,这样就可以在Runtime中运行 注意性能开销! /// <summ ...
- uni-app项目跑APP报useStore报错
前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,现公司项目就是主推uni-app,最近手上项目就是要 ...
- 如何用 mc 对 RustFS 进行存储桶的创建和查询?
mc(minio client)是一个与 Minio 对象存储服务兼容的命令行工具,能够对 minio 进行操作,诸如文件的上传.下载.删除等.由于 RustFS 是 MinIO 的国产替代,因此可以 ...
- vue 报错 Cannot find module '@babel/core'
babel-core的版本不对 解决办法:卸载重新安装 npm un babel-core 然后重新安装: cnpm i -D @babel/core 安装成功后重新运行项目即可
- GEE:批量处理和下载指定时间段的MODIS-GPP产品(MOD17A3HGF)
01 说明 任务分成两个:第一是指定时间范围,提取该范围内的所有GPP影像求取均值:第二是指定时间范围,按年尺度提取每一年中的GPP影像求取均值(一年一景) 要求包括:全球尺度.输出地理坐标系WGS8 ...
- [题解]ABC337E Bad Juice
ABC337E Bad Juice 一开始的想法如下: 就是利用二分法,对于一个区间\([l,r]\),分成\([l,mid-1],[mid,r-1]\)两部分,各找两个朋友喝,右边还空出一个\(r\ ...
- VS2022 打开旧项目缺乏.net 4.5.1 & .net 4.5.2 依赖问题
我操作系统是WIN10,.NET已经安装到最高4.8了.估计不给装4.5.按照网上提示,下载一个nuget包,解压后复制到系统相关位置,问题解决. 1.首先从 Microsoft.NETFramewo ...
- Vue的一个强大的多功能表格插件
Vue的一个强大的多功能表格插件 https://www.jianshu.com/p/c1b22ab8816c?ivk_sa=1024320u VUE中,比较好用的几个Table组件 https:// ...
- 关于Hugging Face:拥抱的脸
Hugging Face是一家创立于2016年的人工智能企业.其宗旨让最先进的NLP技术人人易用.最早是致力于开发聊天机器人,但没有做大.之后HuggingFace向NLP领域转变.在Bert发布后他 ...
- import和from...import的异同
为了节省读友的时间,直接上结论: [结论] 1)两种导入方式得到的结果是一个名为sys.modules的字典(键是被导入对象的名称,值是导入对象所在的路径) 2)就算在不同的位置写了多遍import语 ...