大数据查询分析是云计算中核心问题之一,自从Google在2006年之前的几篇论文奠定云计算领域基础,尤其是GFS、Map-Rece、 Bigtable被称为云计算底层技术三大基石。GFS、Map-Rece技术直接支持了Apache Hadoop项目的诞生。Bigtable和Amazon Dynamo直接催生了NoSQL这个崭新的数据库领域,撼动了RDBMS在商用数据库和数据仓库方面几十年的统治性地位。FaceBook的Hive项 目是建立在Hadoop上的数据仓库基础构架,提供了一系列用于存储、查询和分析大规模数据的工具。当我们还浸淫在GFS、Map-Rece、 Bigtable等Google技术中,并进行理解、掌握、模仿时,Google在2009年之后,连续推出多项新技术,包括:Dremel、 Pregel、Percolator、Spanner和F1。其中,Dremel促使了实时计算系统的兴起,Pregel开辟了图数据计算这个新方 向,Percolator使分布式增量索引更新成为文本检索领域的新标准,Spanner和F1向我们展现了跨数据中心数据库的可能。在Google的第 二波技术浪潮中,基于Hive和Dremel,新兴的大数据公司Cloudera开源了大数据查询分析引擎Impala,Hortonworks开源了 Stinger,Fackbook开源了Presto。类似Pregel,UC Berkeley AMPLAB实验室开发了Spark图计算框架,并以Spark为核心开源了大数据查询分析引擎Shark。
⑵ java开源框架有哪些
Spring MVC
Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等。
2. Struts 2
为了更详细的阐述现代软件工程师广泛使用的现有Java框架,我们决定参考Apache的Struts 1后继版本Struts 2。这个Java框架对于使用构建当代Java EE Web应用程序的工程师来说是一个很好的选择。Apache软件基金会为开发人员提供了一个广泛的工具,用于创建企业级的面向Web的应用程序,开发过程的优化从开始贯彻到结束,还提供后期的维护。如果你还在为高负载系统(如广播门户)发愁,这个框架将是你的不二之选。
3. Hibernate
这个 Java 映射框架借助于将持续存在的数据库访问操作替换为高层次的对象处理功能,来解决对象-关系的不匹配问题。每一个企业应用程序的情况都不同,而Hibernate则拥有功能强大的工具套件来帮助后台开发人员对其数据访问层进行微调。这是一个高级的 ORM 框架,你可以用它来在 Java 对象(实体)上进行数据库操作。利用 Hibernate 缓存来将 Java 环境中的数据持久化到数据库是一个持久化的概念、
4. JSF
作为java EE的一部分,JavaServer Faces被Oracle所支持。虽然这不是一个可以进行快速java开发的最好框架,但它很容易使用,因为Oracle提供了大量文档。此外,除非你离开java EE环境,JSF不需要任何的外部依赖,而功能非常强大。它拥有丰富的库和工具(包括一个简单的用户界面生成工具),使之成为了一个神奇的魔法棒,无论应用程序可能看起来有多么复杂,它都可以给予你支持与帮助。
5. Vaadin
当现代开发者创建商业应用程序,并使用GWT渲染终端网页时,Vaadin称得上是一个超级流行的框架。Vaadin利用一个众所周知的基于组件的方法,能够适应浏览器的变化,从而减轻了开发商的负担。它拥有一套扩展的用户界面组件,以及各种不同的部件和控件,可以让程序员在任何时候都可以建立一个很酷的应用程序。
6. Google Web Toolkit
GWT是另一个免费的java框架,它允许程序员创建和优化复杂的网络应用程序。GWT的软件开发工具包包括核心的java API和小部件,构建随后可以编译成JavaScript的应用程序。
7. Grails
这个独特的框架被视为是提升工程师生产效率的动态工具,因为其干脆的API设计,合理的默认值以及约定架构。与java的无缝集成使得这个框架成为世界上众多框架中的首选。一系列强大的特性,如基于sping的依赖注入和各式各样的插件,可以提供创建现代基于web的app的所有需要的东西。
⑶ java开源的其它
Java世界中存在许多工具,从Eclipse,NetBeans和IntelliJ IDEA等著名的开始到Java开发人员应该知道的JVM分析和监视工具,如JConsole,VisualVM,Eclipse Memory Analyzer等。
如果你是一位经验丰富的Java开发人员,你可能对这些工具很熟悉,但如果不是,现在就是是开始学习这些工具的好时机。就来介绍下程序员都知道的10款Java开源工具,你知道几个呢?
1. JIRA
Atlassian的JIRA是当前敏捷开发领域最重要的工具之一。它用于错误跟踪,问题跟踪和项目管理。如果你遵循敏捷开发方法,例如Sprint和Scrum,那么你必须了解JIRA。它允许您创建Spring循环并跟踪软件开发的进度。
JIRA 是目前比较流行的基于Java架构的管理系统,由于Atlassian公 司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产品要高得多,而且易用性也好一些。
2. Git
Git是Java程序员的另一个必备工具,它是一个免费的开源分布式版本控制系统,旨在快速高效地处理从很小到非常大的项目版本管理。Git易于学习,占用空间小,具有超强的性能。最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是发现已经在很多其他自由软件项目中也使用了 Git。
3. Jenkins
Jenkins是一个用Java编写的开源自动化服务器。它有助于自动化软件开发,例如编译项目,运行单元测试,集成测试,生成文档以及在本地和远程存储库上载工件。
4. Selenium
Selenium是Web应用程序最好的软件测试框架之一。它提供了一种用于创作测试的回放工具,而无需学习测试脚本语言。Java开发人员可以使用Selenium来测试他们的HTML和JSP文件。
5. Groovy
Groovy 是一种基于 JVM 的敏捷开发语言,它结合了 Python、Ruby 和 Smalltalk 的许多强大的特性。你可以使用它编写构建脚本,测试脚本,甚至可以使用像Gradle和Spock这样的流行框架。
6、Spock
Spock 是适合 Java 和 Groovy 应用程序的一个测试框架。由于其JUnit运行程序,Spock与大多数IDE,构建工具和持续集成服务器兼容。如果你想提高你的单元测试技能,那么多花点时间在学习Spock上总是没错的。
7. Maven
如果你是一位经验丰富的Java开发人员,那么你一定非常了解Maven了,Apache Maven是一个构建和项目管理工具,基于项目对象模型(POM)的概念,Maven可用于管理项目的生成、报告和文档记录。
Maven的另一个有用特性是依赖关系管理,由于我们在Java项目中使用了大量第三方库,因此手动管理每个JAR及其依赖项可能非常麻烦,Maven通过自动为你下载正确的JAR来帮助你解决问题。
8. Gradle
Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建工具。为什么选择Gradle在Ant或Maven?因为它结合了其他构建工具的最佳特性,例如它具有Ant的灵活性和控制,Ivy的依赖管理,Maven的配置和插件的约定,以及可以在Ant上使用Groovy DSL。这使它成为Java项目的最佳构建工具。
9. Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包装系统。
10. Linux
初学Linux最好从Linux命令行基础知识开始,Linux是一种自由和开放源码的类Unix操作系统,在你的职业生涯中起到重要的作用,每一个Java开发者都应该学Linux。如果以上工具还有你没学会的,那就不要再错过了赶紧学起来。
⑷ Java连接多个数据库有什么开源实现吗
1. 如果是 MySQL 中的多个数据据实例的话,你操作数据库时,使用 schema.table 就可以了
2. 如果是 MySQL 数据库内和其他数据库同时使容用的话,需要在 Spring 中配置多个 datasource
⑸ java开源的项目
Sotacs 【Java开源 未分类开源项目】
Tapestry4 web框架组件:
SpringContracts 【Java开源 未分类开源项目】
SpringContracts是契约式设计(Design by Contract)的一个Java解决方案,能够无缝地集成到Spring框架中。基于Annotations,AOP并且支持EL表达式语言。
Jettison 【Java开源 未分类开源项目】
Jettison是一组StAX parser与writer用于读写JSON。这就使得可以在像CXF,XFire这样的service框架中实现基于JSON的web service。
jEdit - Plugin Central 【Java开源 未分类开源项目】
jEdit Plugin Central是JEdit文本编辑器最主要的在线插件库。可以结合该插件库,通过jEdit的插件管理器来安装,更新和删除插件。所有插件列表
JCL 【Java开源 未分类开源项目】
JCL提供一个类库用于从JARs中加载classe。它特别适用于在一个应用程序中有区别地加载多个版本中相同的class。
JXTA 【Java开源 未分类开源项目】
Sun微系统公司公开了旨在建立P2P(Peer to Peer)通用技术基础的JXTA计划。JXTA技术是网络编程和计算的平台,用以解决现代分布计算尤其是点对点(P2P)计算中出现的问题。。
jOrgan 【Java开源 未分类开源项目】
jOrgan是一个Java开发的虚拟管风琴。
JOnbAS 【Java开源 未分类开源项目】
基于NetBeans平台的JOnAS插件。
RoX 【Java开源 未分类开源项目】
RoX(RPC over XML)是构建在Java1.4 NIO之上一个完整XML-RPC实现。
Spring-Dashboard 【Java开源 未分类开源项目】
利用Spring-Dashboard开发人员和测试人员能够监测spring web应用程序中的流程并收集在应用程序中资源使用情况的统计信息。
jUploadr 【Java开源 未分类开源项目】
jUploadr是一个跨平台,跨站点的照片上传工具。当前jUploadr可运行在Windows、Linux和OS X平台之上并支持包括Flickr与Zooomr。它可以让你在上传之前设置好照片的属性。jUploadr还支持批处理。
Bottomline 【Java开源 未分类开源项目】
Bottomline是一套利用JCL直接从JAR 文档加载数据库驱动的JDBC Bridge API。Bottomline使用jdbc:bottomline bridge从各自的JAR文件加载多个驱动。与JDBC的不同之处在于, Bottomline使用自定义的class loaders来装载驱动完全独立于JVM的bootstrap class loader.
BackupEasy 【Java开源 未分类开源项目】
BackupEasy是一个按日期/时间设定自动备份文件夹和文件的软件。它采用Java开发,界面简单,支持FTP备份,支持简体中文。
SubEtha 【Java开源 未分类开源项目】
SubEtha是一个成熟的邮件列表管理系统,它是一个采用EJB3与JMS开发的三层J2EE应用程序。 SubEtha非常容易安装在Windows与Unix平台上,一个友好的web界面可用于管理所有配置,支持虚拟域名,支持用户拥有多个email地址,智能附件处理,可配置的消息处理过滤器,基于per-list 的角色权限控制等等。
JIExplorer 【Java开源 未分类开源项目】
JIExplorer是一个采用Java开发的看图工具。支持幻灯片,放大/缩小,全屏等功能。此外还支持按关键字进行图片分类管理,把图片保存到HSQLDB与MySQL数据库中。
j-Interop 【Java开源 未分类开源项目】
j-Interop是实现DCOM wire protocol (MSRPC)的一个开源类包。可用于开发双向,Non-Native,能够与任何COM组件交互的纯Java应用程序。该项目全部采用纯Java实现并且没有使用JNI(Java Native Interface)来提供对COM的访问。
QALab 【Java开源 未分类开源项目】
QALab这个工具能够收集,整理来自一些QA工具的数据如:pmd,checkstyle,FindBugs,Cobertura和Simian,并跟踪它们的overtime。这可以帮助开发人员,架构师与项目管理者掌握项目QA的趋势。
SOJO 【Java开源 未分类开源项目】
SOJO提供一个类库用于把POJOs转换成指定的格式可以是CSV、XML、JSON等,以便与非Java的程序进行通信。这些转换都是可插拔的,所以可以自定义自己想要转换的格式。
Subsonic 【Java开源 未分类开源项目】
Subsonic是一个在线媒体播放系统。它能够将指定路径下的音乐(mp3,aac,ogg,wma等)和视频转换播放流。需要Java5.0。
Glyph 【Java开源 未分类开源项目】
Glyph是一组用于加快开发基于Jini应用程序的工具类与J2SE5.0注释。
nbtapestrysupport 【Java开源 未分类开源项目】
nbtapestrysupport该项目是一个NetBeans插件主要是为用Tapestry框架进行的web开发提供支持。功能包括:在Tapestry配置文件中为class name,file和librarie提供超链接支持。只需按拄CTRL然后选中类名就能够转到相应的类。提供向导来创建一个新的Tapestry项目所需要的页面,组件和类库等。一个组件面板允许用拖放的方式来设计页面与组件。为不同的配置文件定制编辑器。集成Tapestry的开发文档。
DContract 【Java开源 未分类开源项目】
该项目提供一个用于处理数字合同(digital contract)的Java工具箱。
GenericRCP 【Java开源 未分类开源项目】
GenericRCP是一个基于SpringRCP开发的胖客户端,它能够根据hibernate domain模型自动生成一个GUI用于修改/删除/新增将被持久化的Java对象。