A. 如果说只学一门Web编程语言和框架,那推荐哪种组合呢
姑且分为三种情况:
第一,做WEB后端。如果你只做WEB后端,就不得不考虑今后的发展,最好学一门语言,这种语言可以在中间件和服务器开发底层都能用到,而且能有优势。推荐Python,Go,这两种都比较稳,而且在中间件的开发中也有优势。当然如果你是个喜欢新鲜事物的人,想学习新的技术语言,推荐Scala。
最后我想说,无论是选择什么语言,都必须认真学习,学得扎实是进行下一步的必要条件,这是进行下一步的基础,万万不能忽视。同时,可以多掌握和涉猎几种语言,掌握的种类和熟练程度越多越好,在今后的工作中必将大有裨益的。
B. 如何看待reactive web框架binding.scala
这东西的目标人群应该是从Java转到Scala的后端程序员,并且刚好又想做点前端的事情,感觉这个圈子太小了!
前端工程师基本不会投向Scala的怀抱。Scala本身后期的学习曲线就很陡峭,再加上JS也在进化,各种新特性慢慢能让前端开发变得高效优雅,所以前端工程师不会有动力转向Scala。
另外,这种东西要进入生产,还需要考虑很多问题,包括:
1、开发过程是否友好,是否方便debug。
2、转换出来的JS代码会不会臃肿。
C. 系统开发框架有哪些
系统开发框架有:
1、Spring MVC & Spring Boot
Spring MVC应该最常用的。 Spring Web MVC框架( 简称Spring MVC)是一个丰富的模型视图控制Web框架。使用 DispatcherServlet发布请求处理,他使用可配置的处理程序映射,视图解析和主题解决方案。Spring MVC 用户似乎都商量好的,大约40%的开发都使用Spring。
2、Grails
知名Java虚拟机Web应用程序开源框架。Grails是一个开源、全栈JVM Web开发框架。吸取Groovy语言精华,对于Java虚拟机来说是一个敏捷和动态语言,为开发者提供一个高效开发经验。
3、Spring
Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本。
4、JFinal 快速开发平台 EOVA
基于JFinal开发,首创JFinal 快速开发平台,JFinal最佳实践!
5、JavaEE应用基础平台 AOS
AOS平台简介 AOS应用基础平台基于JavaEE技术体系,以“标准功能可复用、通用模块可配置、行业需求快速开发、异构系统无缝集成”为目标,为软件开发团队提供高 效可控、随需应变、快速实现业务需求的全栈式技术解决方案。
6、Spring Scala
Spring Scala 项目的目的是为了简化在 Scala 应用中使用 Spring 框架。
(3)scalaweb框架推荐扩展阅读:
计算机系统开发是根据计算机用户对应用系统的技术要求,分析原系统,设计新的计算机系统的内部结构并加以实现和维护的过程。计算机系统开发也是一个管理科学问题,自始至终贯穿着人员组织、工程化、标准化等管理工作,而且在很大程度上影响系统的性能和开发工作的效率。
计算机系统可信性是描述系统所提交服务的性质的一种定性量度,用于表征系统可提交用户有足够理由依赖的期望服务能力。 所谓系统提交的服务是指所有由用户察觉到的系统行为。可信性作为一种定性量度需根据不同应用来对其属性具体化或定量化。典型的可信性定性/定量量度包括:可靠度、可用度、安全度。可维修度、可测性、完整性等。
D. 最近工作会用scala,请指条明路,该怎么解决
学呗!
经常有人问应该怎样学习Scala编程语言。通常的回答是看Scala的相关书籍,并学习Scala视频课程。但是澄清一点,即使你最终学会了Scala编程,也并不意味着你是最高效地掌握了Scala。
1、Scala书籍
一提Scala编程书籍,最容易提到的是《Programming in Scala》,这本书是由Martin Odersky、Lex Spoon、Bill Venners三位作者合写的书籍。其中,Martin Odersky是Scala语言的发明人。最近该书发布了第三版,内容覆盖了Scala 2.12版的新特性,但是在内容上和第一版差别不大。尽管如此,这本书可能是有关Scala编程的最全面、最权威的指导书籍。在这本书中,Martin不仅讲述了该如何使用,而且还有他在语言上会这么设计的解释。这本书接近900页,阅读不算难,建议三周学完它。这本书主要聚焦于Scala的语言特性,并没有深入到Scala的整个生态系统中。
这本书《Moder Web Development with Scala》就是基于以上观点编写的Scala学习书籍。作者Denis Kalinin。该书少量介绍了Scala语言本身,主要聚焦于怎样使用Play框架构建Web应用,使用ScalikeJDBC库访问数据库,使用Scala Future和Akka Actor执行异步任务,使用MacWire连接依赖,使用BCrypt库实现对用户的授权认证,使用ScalaTest和Mockito测试自己的Scala代码,还有使用Gradle和SBT构建和管理项目,最后讲述了怎样集成最新的前端工具,比如Webpack和React。
E. java框架有哪些
java框架实在是太多了,网上一抄一大段,根本就了解不到什么。我还是以我的经验来说一下j2ee的框架。
1.首先力推struts2框架,这是最经典的框架(可以说没有“之一”)。可以帮你快速搭建出一个MVC模型出来。(注:struts1已经很少用了,且问题也很多,强烈推荐使用struts2).
2.Spring框架,这是排行第二的框架(我个人排得,非权威),这个框架出彩的地方就在于它的“依赖注入”和“控制反转”。简单的说,就是在程序运行的时候才将参数注入到容器里。
3.持久层框架选Hibernate和Ibatis。 Hibernate自动化能力强,开发大型应用可以节约开发时间,ibatis小巧简洁,灵活。
4.Jquery是继prototype之后又一个优秀的Javacript框架,封装了很多javascript方法,是开发jsp用的框架,目前很流行
一般开发,都是使用Struts2+Spring+Hibernate(ibatis)整合,前端用jquery或者其他类似框架。对于简单的系统,有时用Spring MVC一个框架即可。
F. Scala 是一门怎样的语言,具有哪些优势
曾经有人问Java的创始人高斯林这样一个问题,“除了Java语言以外,您现在还使用JVM平台上的哪种编程语言?”他毫不犹豫的说是Scala。
Scala到底是什么?在目前众多的JVM语言当中,Scala无疑是最引人注意的语言之一。Scala是一个静态语言,更适合大型工程项目,Scala直接编译成Java字节码,性能接近Java。Scala是一个多范式的语言,你可以混合使用函数式和面向对象编程,混合使用可变类和不变类,混合使用Actor和传统的Java并发库。
短短一个月的时间,Scala于本月冲进了TIOBE的前五十名。一个 Twitter 的开发人员说过,Scala 将会成为现代 Web2.0 的发起语言。LinkedIn 也用这种语言。同样许多其他大的公司如 Sony Picture, EDF, SAP 也开始使用这种语言。为什么Scala发展这么迅猛,可以获得如此热烈的社区支持。
曾冠东还表示,Scala不是Java的杀手,它无法取代Java的地位,也突破不了JVM的限制、Java实现不了的功能它也实现不了。我们可以将Scala形象的理解成大量语法糖的Java。
Scala 开发团队发布了最新的2.9.2稳定版本,Scala 语言的特性有许多,例如高阶函数和对象、抽象类型绑定,actor 使得函数在 Scala 中能是一个子类成为可能,Scala 中的设计模式使得面向对象和函数编程无缝结合。Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。它已经成功运用在电信行业。Spark 是一种可扩展的数据分析平台,它整合了内存计算的基元,因此,相对于 Hadoop 的集群存储方法,它在性能方面更具优势。Spark 是在 Scala 语言中实现的,并且利用了该语言,为数据处理提供了独一无二的环境。Scala 编译器可以生成字节码,直接运行在使用JVM上。该语言(它实际上代表了可扩展语言)被定义为可直接集成到语言中的简单扩展。
Scala作为一门静态语言,它的主要特性有哪些?
· Scala是面向对象的
Scala是一个纯面向对象语言,在某种意义上来讲所有数值都是对象。对象的类型和行为是由class和trait来描述的。Class的抽象可由子类化和一种灵活的基于mixin的组合机制(它可作为多重继承的简单替代方案)来扩展。
· Scala是函数式的
Scala还是一个函数式语言,在某种意义上来讲所有函数都是数值。Scala为定义匿名函数提供了一种轻量级的语法,它支持高阶(higher-order)函数、允许函数嵌套、支持局部套用(currying)。Scala的case类及其内置支持的模式匹配模型代数类型在许多函数式编程语言中都被使用。
· Scala是静态类型的
Scala配备了一套富有表现力的类型系统,该抽象概念以一种安全的和一致的方式被使用。
· Scala是可扩展的
Scala的设计承认了实践事实,领域特定应用开发通常需要领域特定语言扩展。Scala提供了一个独特的语言组合机制,这可以更加容易地以类库的形式增加新的语言结构:
任何方式可以被用作中缀(infix)或后缀(postfix)操作符闭包按照所期望的类型(目标类型)自动地被构造
两者结合使用可方便地定义新语句,无需扩展语法,也无需使用类似宏的元编程工具。
· Scala可与Java和.NET进行互操作
Scala设计时就考虑了与流行编程环境良好交互,如Java 2运行时环境(JRE)和 .NET框架(CLR)。特别是与主流面向对象语言,如Java和C#尽量无缝交互。Scala有像Java和C#一样的编译模型(独立编译,动态装载类),允许访问成千上万的高质量类库。
在并发性方面,与 Scala 在 .NET 领域中的姐妹语言 F# 相似,Scala 是针对 “并发性问题” 的解决方案之一,让开发人员能够更加轻松地专注于问题的实质,而不用考虑并发编程的低级细节。Actor 编程模式让高度并行应用程序的开发更加简单。Scala把Erlang风格的基于actor的并发带进了JVM。我们可以利用Scala的actor模型在JVM上设计具伸缩性的并发应用程序,以自动获得多核心处理器带来的优势,而不必依照复杂的Java线程模型来编写程序。Scala 为并发性提供了两种级别的支持,这与其他与 Java 相关的主题极为类似:
首先,对底层库的完全访问(比如说 java.util.concurrent)以及对 “传统” Java 并发性语义的支持(比如说监控程序和wait()/notifyAll())。其次,这些基本机制上面有一个抽象层
Scala 提供了在稳定的高性能平台(Java 虚拟机)上生成的能力同时也是一门敏捷性语言。这一类型的语言也有其他的选择,例如 Jython, JRuby, Groovy 和 Clojure, 但是这些都是运行在 JVM 上的动态类型语言。Open Class 的效果让大家会觉得Scala是动态语言,但它是选择隐式转换来实现的,这也正好证明了Scala是静态语言。隐式转换(Implicit conversion)使 Scala 具有类型安全性,正如扩展方法(extension method)之于 C#,开放类(open class)之于 ruby。即:向未曾定义的类型添加方法(如字符串、列表、整数)。这是使得 Scala 符合 DSL(特定领域语言)模型的特性之一。
Scala结合了面向对象和函数编程的优势,函数编程的一个好处就是你能够像运用一个数据那样运用函数,可以用来定义真正高层级的库,或者去定义新的领域特殊语言(DSL)。
在谈及Java与Scala的对比时,曾冠东表示,Scala能调用绝大部分的Java,而Java调用Scala独有的东西会比较难。Java 拥有非常强的概念规范,因此任何一个 Java 程序之间具有非常多的相似之处,并且这样能够方便的进行程序员交替。但是 Scala 并没有这样的统一性,因为这是一门很有表现力的语言。现场曾冠东为我们演示了实际案例,如下图所示:
正所谓,金无足赤,人无完人。Scala对二进制不兼容,语法也越来越复杂,不能突破Bytecode的限制、编译速度有所缓慢。当它被广泛用于单元测试、开发工具、Socket开发、以及面对多核挑战的并发应用。总而言之,Scala是一种函数式面向对象语言,它融汇了许多前所未有的特性,而同时又运行于JVM之上。正如JRuby 创建者之一Charles Nutter 所宣称的那样Scala就是 Java 王位的合法继承人。随着开发者对Scala的兴趣日增,以及越来越多的工具支持,无疑Scala语言将成为广大软件工程师手上一件必不可少的工具。更多精彩内容,请关注专题:http://www.it168.com/remen/qcon/
G. lift的简介
它是一种在 Scala 编程语言上构建的可伸缩框架。它非常适合 Apache Geronimo 这样的可伸缩应用服务器,尤其是在 Scala 编译为与 Java™ 语言非常相似的字节码并使用 Java 平台之后。
lift是一个非常优雅的web框架,基于Scala编程语言,使用Apache 2.0 license许可发布。lift 提供开发者最好的方式创建交互的,高性能的web应用。基于lift 的应用能够部署为WAR文件进入 J2EE 容器,类似Jetty, Tomcat, 和 Weblogic。基于lift 的应用拥有高性能和能够使用你现存的Java库。
H. scala中web开发框架,哪一个能最后一统scala天下
最近研究了一下被很多人吹嘘的Play Framework,当然,是它的最新版本2.0,完全基于Scala开发,Typesafe官方推荐,号称scala开发web应用的不二选择。我的基本感觉是,just like a toy。。。
1. 不支持j2ee
Play号称基于nio的event驱动,自行实现了http协议,比之传统j2ee应用性能高出无数云云,因此,使用Play,无需用到j2ee容器,也没有servlet/jsp的概念,只需要jvm,然后run就可以了。看上去的确很美好,然后一个很基本的事实是,除了个人的玩具应用,有哪个企业的IT管理员会愿意在已经熟悉的j2ee环境上在出现一个新的环境?更基本的事实是,从管理的角度来说,play提供的容器,能够达到j2ee规范的高度吗?更更基本的事实是,你能够相信它的安全性吗?虽然tomcat也会有安全漏洞,虽然jetty也不见得就真的安全,虽然websphere和weblogic都是要花钱的,但是比起他们来,你会更相信play的容器吗?我相信99%的答案是No。
(当然,有一个第三方插件项目在试图帮助Play部署war,但就其官方的态度而言,我是完全无法赞同的,而且,那个插件项目,远未到成熟的地步,因为Play从根子上就没有打算遵循j2ee规范)
2. 没有服务端session
Play的口号是stateless,但我并不认为这个可以成为不提供服务端session的理由,现实生活中大部分的网站还是需要session的,你哪怕提供一个插件来提供session功能也好啊,可是很遗憾,没有,官方的文档上说,请自行处理。。。自行处理。。。这个世界上还有程序员有兴趣去实现一个session管理吗?
3. 编译成函数的模板
Play认为这是它的优点,静态编译的模板,类型安全的参数传递。但我却被它彻底的打败了,为了向被各个页面复用的page top传递几个参数,我需要在每一个直接引用到它的模板,以及每一个间接引用到它的模板上添加所有的参数以便传递,因为,调用模板其实就是调用函数啊,我必须传递参数啊。。。当然,幸运的是,我们用的是scala,scala有implict参数定义,oh my God,我不需要传递参数了。。。可惜的是,我仍然需要在每一个层次的模板上声明必须的参数,这是怎样的一种精神,这是精神分裂的前兆。。。更加麻烦的是国际化与本地化处理,
Play提供了一个getmessage的函数让我们可以取得本地化字符串并且填入参数,功能很简单,当然,这并不妨碍我直接使用JDK的国际化API,因此这倒算不上它有多罪恶,然而,在表现层,或者说view层,当我希望根据locale选择一个不同的模板文件的时候,问题就麻烦了,静态编译的模板,类型安全。。。似乎我需要用到反射才能够根据locale选择模板了。
I. Java目前主流框架都有哪些
1.Spring
这是其他Java框架中的绝对领导者。 掌握Spring是Java开发人员职位最普遍的要求之一。 造成这种情况的原因很多,但主要的原因是普遍性。
2.Play
Play是大多数开发人员喜欢的另一个轻量级框架。 它允许您使用Java和Scala构建Web应用程序。 它是为满足现代移动和Web应用程序的需求而设计的。
3.Spark
Spark Framework是Java和Kotlin编程语言的一种微框架和特定于领域的语言。 Kotlin也可以在JVM上运行,并且可以与Java 100%互操作。 使用Spark,您可以轻松开发Web应用程序,微服务和REST API。
4. JHipster
Jhipster是最新的Java框架之一。 它于2013年发布。Jhipster将Spring Boot,Angular和React集成到一个大型框架中。 它使您可以轻松构建基于Java的现代Web应用程序。
5.Blade
Blade是一个轻量级的Java 8+ MVC框架。 当我们谈论Blade的轻巧性时,是指其源代码的大小,该大小不超过500KB。
6.Hibernate
在谈论最佳的Java Web框架时,不能忽视Hibernate。
Hibernate是一个ORM(对象/关系映射)框架。 它允许您不使用sql而是使用Java将查询写到数据库服务器,这通常会改变数据库的常规外观。
7. MyBatis
MyBatis是用于Java编程的映射框架。 它简化了将Java应用程序与SQL数据库链接的过程:它充当它们之间的中间件。
8.Struts
Struts是用于创建企业级Java Web应用程序的开源MVC(模型-视图-控制器)框架。 最初的Struts框架(Struts 1.x)在2007年与WebWork框架合并时进行了重建。 Struts 1.x和Struts 2.x不可互换,因为它们之间存在重要区别。 您可以从Struts的Releases页面下载。
9.Vaadin
Vaadin是一个开放源代码客户端服务器框架,可让您使用预先设计的UI组件创建Web应用程序。 它是专门针对业务应用程序而构建的,重点是可访问,美观且直观的用户界面。
10. JavaServer Faces(JSF)
JSF是一种JCP标准技术,用于在Java EE平台上创作基于组件的用户界面。 该框架可能不是最好的框架,但是最大的好处是Oracle支持,许多其他工具,出色的文档以及友好的社区。
J. scala的SQL数据库框架怎么用比较好
以下是Twitter所使用的开源项目,简要浏览之后,我觉得是一个很好的关于分布式架构,大数据,异步网络传输(客户端,服务端)学习的list,做个备份,以便后用。
1. 分析和搜索服务
Twitter的搜索服务每天支持超过10亿次的查询,其背后的开源项目包括:
Apache Cassandra:一套分布式NoSQL数据库系统,以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型,是一个网络社交云计算方面理想的数据库。该项目最初由Facebook开发,于2008开源并捐赠给Apache基金会。
Apache Hadoop:由Apache基金会所开发的分布式系统基础架构,可使应用程序充分利用集群的威力高速运算和存储,用户可以在不了解分布式底层细节的情况下,开发分布式程序。
Apache Lucene:一个全文检索引擎工具包,目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
Apache Pig:一个基于Hadoop的大规模数据分析平台,它提供的类SQL语言称为Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapRece运算。Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口。
2. 服务器和存储
Twitter需要将每天用户发送的推文存储到数据库,并推送给其他相关的用户。该过程用到的开源项目包括:
Linux:主要用于Twitter服务器。
Memcached:主要用于Twitter的缓存基础设施,作用是加速动态Web应用程序,减轻数据库负载。
Mysql:流行的开源关系型数据库,被Twitter大量用于存储Twitter消息。
Node.js:一套用来编写高性能网络服务器的JavaScript工具包,在Twitter中用于队列处理(接收推文并写入数据库),使服务器能处理每个连接而不会阻塞通道。
3. Twitter工程师的工具箱
Apache Subversion:开源的版本控制系统
Git:一个分布式的版本控制系统
Eclipse:大名鼎鼎的Java IDE。
Gerrit:一个基于Web的代码评审和项目管理的工具,主要面向基于Git版本控制系统的项目
Jenkins:一个持续集成引擎,主要用于持续、自动地构建/测试软件项目,以及监控一些定时执行的任务
RSpec:一个BDD 测试工具
4. Twitter背后的编程语言和框架
OpenJDK:Java的开源版本。Twitter陆续将一些项目从Rails迁移到了Java。
Python:一种高效的动态解释型Web编程语言。
Ruby和Ruby on Rails:Twitter最初主要由Ruby和Rails开发。
Scala:Twitter使用的主要应用编程语言之一,很多Twitter的基础架构都是用Scala编写。
Clojure:Clojure是一种运行在Java平台上的Lisp方言,在任何具备Java虚拟机的地方,都可以利用Lisp的强大功能。Twitter的大数据处理系统Storm就是基于Clojure。
Drupal:使用PHP语言编写的开源内容管理框架(CMF),由内容管理系统(CMS)和PHP开发框架共同构成。Twitter的开发者社区基于Drupal构建。
Sinatra:一个轻量、快速的Ruby开发框架。
5. Twitter的前端解决方案
jQuery:全球使用最广泛的JavaScript框架。
Less:一个使用广泛的CSS预处理器,通过简单的语法和变量对CSS进行扩展,可减少很多CSS的代码量。
MooTools:一个简洁、模块化、面向对象的开源JavaScript框架,为开发者提供了一个跨浏览器的JS解决方案
Zepto.js:一个轻量级的Javascript框架,主要用于移动开发
6. Twitter服务开发框架
TwistedMatrix:一个Python 框架,用来开发非阻塞异步的网络服务和应用程序。
Netty:一个异步的、事件驱动的Web应用框架和工具,用于快速开发高性能、高可靠性的网络服务器和客户端程序。Netty目前作为Twitter的核心队列Kestrel的通信模块。
Apache Thrift:一个由Facebook开源的远程服务调用框架,采用接口描述语言定义并创建服务,支持可扩展的跨语言服务开发,所包含的代码生成引擎可以在多种语言中创建高效的、无缝的服务。
Important remarks: Thrift 这篇文章对Thrift做了综合性的介绍,值得我思考的是这篇文章:“Thrift与其他框架的比较”,以前对于分布式系统中的服务开发框架,我一直在想为什么不用rest或者webservice来进行通讯?而主流的却是选择RPC? 文章用图表来展示了Thrift在网络传输性能上与rest-jason,xml的优势。所以,是不是可以这样理解:Thrift从协议的定义上就使用了高效压缩数据格式TCompactProtocol(就算不用压缩,只用TBinaryProtocol 二进制流的数据格式,其传输性能也高于jason和xml),从而避免了传输,序列化jason或者xml 造成的代价。
Twitter公司所开源的项目
Twitter从开源社区中获得了大量的好处,而Twitter也在不断地回馈社区,开源了大量基础设施和工具,使得其他企业和开发者不必重新发明轮子,在这些开源项目的基础上更加快速地实现自己所需。
1. 大数据处理
scalding:一个用于Cascading的Scala API。Cascading是一个构建于Hadoop上的API,用来创建复杂和容错数据处理工作流,它抽象了集群拓扑结构和配置,允许开发者快速开发复杂分布式的应用,而不用考虑背后的MapRece。
summingbird:允许开发者以类似于本地Scala或Java的方式编写MapRece程序,并在大部分着名的分布式MapRece平台(包括Storm和Scalding)中执行它们。
2. 前端项目
Bootstrap:一个用于前端开发的工具包,包含了基本的CSS、HTML组件,包括排版、表单、按钮、表格、网格、导航等。
TwUI:针对Mac平台的、支持硬件加速的UI框架,受到了UIKit的启发。
typeahead.js:一个快速、全功能的自动完成库
hogan.js:一个Mustache模板语言的编译器
3. 后端服务
Twitter Mysql:Twitter的MySQL分支
Parquet:一种Twitter内部供Hadoop使用的列式存储格式,为Hadoop生态系统中的所有项目提供支持高效率压缩的列式数据表达,而且与数据处理框架、数据模型或编程语言无关。
Finagle:一个允许开发者使用Java、Scala或其他JVM语言来构建异步RPC服务器和客户端的库,主要用于Twitter的后端服务。
iago:一个负载生成器,用来在产品正式发布前做流量负载测试。
twemproxy:一个快速、轻量级的memcached和redis代理服务器
zipkin:一个分布式的跟踪系统。在Twitter中用于收集各个服务上的监控数据,并提供查询接口。
4. Twitter基础设施通用库
commons:Twitter的Python、JVM公共库
util:Twitter的一些可重用的代码库
cassovary:一个基于JVM的简单的大图形处理库