Mobile- und
Cloud-Computing unter besonderer Betrachtung der Technologien der US‑amerikanischen
Unternehmen Google Inc. und Amazon.com Inc. und der deutschen SAP AG
--
Mobile- and Cloud-Computing with special regard
to technologies of the American companies Google Inc. and Amazon.com Inc.
and the German SAP AG
Download Book (PDF)
Publisher: BookBoon, ISBN 978-87-403-0264-6, 129 Pages
In dieser
Projektarbeit werden die Themen Mobile-und Cloud-Computing unter spezieller
Berücksichtigung der Technologien der Unternehmen Google Inc., im folgenden
Google genannt, Amazon.com Inc., im folgenden Amazon genannt, und der SAP AG,
im folgenden SAP genannt, evaluiert. Diese Evaluierung soll einem Unternehmen
als Blueprint dienen, um so die Unternehmensprozesse mit den genannten
Technologien umsetzen zu können. Das Unternehmen erhofft sich dadurch eine
Effizenzsteigerung durch Automatisierung, Flexibilisierung, Skalierung und
Benutzerfreundlichkeit. Der Autor verbindet in dieser Arbeit verschiedenste
Technologien und gibt subjektive Empfehlungen für die Nutzung der jeweiligen
Technologie ab. Die Themen Mobile Computing und Cloud Computing werden zunächst
seperat dargestellt. Im Anschluss zeigt Kapitel 4 wie beide Welten
zusammenwirken und welche Rolle etablierte Technologien spielen. Zudem wird auf
das aktuelle Thema In-Memory Computing eingegangen und dargestellt wie es sich
in das Mobile- und Cloud-Computing Ökosystem eingliedert.
This project
assignment evaluates and presents the topics Mobile- and Cloud-Computing with
special regard to the technologies of the companies Google Inc. (Google), Amazon.com
Inc. (Amazon) and SAP AG (SAP). The evaluation should serve as a blueprint for
a company to implement business processes with the mentioned technologies. By
using these technologies the company tries to increase its efficiency via
automation, flexibilisation, scaling and usability. The author of this paper
combines different technologies and gives subjective advices regarding the use
of a particular technology. First the topics Mobile Computing and Cloud
Computing will be shown separately. Afterwards chapter 4 will show how both technologies
interoperate and the meaning of legacy technologies. Furthermore, In-Memory
Computing will be explained and how it fits in the ecosystem of Mobile- and
Cloud-Computing.
Content:
Mobile Computing, Cloud Computing, In-Memory Computing, Google, Amazon, SAP, Android, iOS, BlackBerry BBX, NFC, LBS, Adobe, Flash, Flex, Windows Phone 7, WP7, Sybase, SUP, Sybase Unwired Platform, SAP NetWeaver Gateway, SAP NetWeaver Mobile, SAP ITSmobile, Mobile-WebApp, Hybrid-NativeApp, Purely-NativeApp, HTML5, JavaScript, CSS3, Dart, Coffeescript, jQueryMobile, jQM, jqMobi, jQTouch, sencha touch, iUI, iWebKit, Dojo Mobile, Jo, iScroll, Ajax, Comet, Streaming, Long-Polling, XHR, XHR2, Polling, Piggyback-Polling, WebSocket, Socket.IO, Athmosphere, CometD, Kaazing, Kaazing WebSocket Gateway, Native Frameworks, Briding Frameworks, PhoneGap, Titanium, Rhodes, IaaS, PaaS, DaaS, SaaS, FaaS, HuaaS, MoaaS, Virtualisierung, Skalierung, Scale-out, Scale-up, SOA, SOAP, REST, Messaging, SQS, SNS, AMQP, JMS, RabbitMQ, Qpid, ActiveMQ, HornetQ, CAP, ACID, BASE, Map, Reduce, BigTable, Dynamo, Wide-Column-Store, Row-oriented, Column-oriented, Key-Value-Store, Graph-Store, Document-Store, CouchDB, MongoDB, HBase, Cassandra, SimpleDB, Redis, Riak, Neo4J, Replizierung, Big Data, Schema-free, Sharding, MVCC, Consistent-Hashing, EC2, EBS, S3, ElastiCache, RDS, Cloud Front, Elastic Beanstalk, Cloud SQL, Cloud Storage, C2DM, App Engine, GAE, Page Speed Service, Akamai, River, OpenShift, NetSuite, Salesforce.com, Cloud Foundry, CloudBees, Heroku, Oracle Cloud Service, Oracle Public Cloud, Database Cloud Service, Java, Scala, Ceylon, Kotlin, Groovy, JSON, NoSQL, Node.js, Node, Asynchron, Event-Driven, Non-Blocking, NIO, Event-Loop, Nginx, Android-Couchbase, 2-Tier, 3-Tier, Java EE 5, Java EE 6, JSF, Ruby on Rails, Wicket, GWT, SanssouciDB, SAP HANA, OLTP, OLAP, IMDB
Big thanks to all the proof readers!
Your feedback is welcome!
Showing posts with label Ceylon. Show all posts
Showing posts with label Ceylon. Show all posts
Thursday, February 2, 2012
Tuesday, October 25, 2011
((Ceylon vs. Kotlin) vs. Scala) vs. The Rest of the World
The blog title sounds a bit like buzzword bingo, doesn't it? Damn, I forgot to mention Gosu.
There are quite many new brand-new-must-have-technologies these days.
There are Android, HTML5, PhoneGap, CoffeeScript, node.js, Websockets, Flex, Adobe Air, REST, JSON, BSON, AMQP, RabbitMQ, JEE6/7, Cloud (you know, everything is in the cloud today), NoSQL, SaaS/PaaS/IaaS, and of course, Ceylon, Kotlin, Gosu, Clojure, Scala, Groovy, JRuby and all the other JVM based programming languages.
So, how should look a really, really cool application? Android Mobile Frontend written in Scala, REST Interface to get some data from a server which is written in Ceylon which access a NoSQL HBase Database via Map/Reduce to read&write Big Data. Our server is hosted on AWS (plain Tomcat, Glassfish or JBoss AS on AWS or should we use OpenShift from RedHat rather than Amazon?), of course. Oops, I forgot a non-smart-phone client. Ok, web-based client written in... hmmm... JSF? GWT? Wicket? JavaFX 2.0? Flex? Silverlight? or just plain HTML5 with a ass kickin' Websocket connection to our server? Ok we pick HTML5. But when I wanna pick HTML5 and I do not wanna write so much JavaScript by myself (even if the new JavaScript API is pretty cool in HTML5) I am gonna need a full-fledged JavaScript Library/Toolkit. No problem at all. What do you want? jQuery, dojo, ExJS, MooTools, scriptaculous or YUI? Whatever... just pick jQuery as everybody does... (BTW I did not mention AJAX because it is not buzzword-noteworthy anymore. Even Comet/Bayeux got the kiss of death from Websockets...)
Puhhh, buzzword scrabble finished and application architecture defined. Nope. We have made a mistake. There isn't a compiler for Ceylon yet. Someone told me Ceylon is a vaporware until now. Ok, replace Ceylon with Kotlin. Ops, there isn't a compiler for Kotlin as well. Doesn't matter let's assume that I can run my Ceylon/Kotlin code (instead of just write them down on some slides). What should we choose? Ceylon or Kotlin? In the following you will find a short feature comparison. It is a non-offical and subjective comparison from my point of view. It relies on the information which is available until now. Found any mistakes? Just leave a comment!
Enough said. Here is the comparison. BTW I did not include Scala because it is "to academic/function/not functional enough/..." ;-)
Comparison is not finished yet. I will update it from time to time.
Ceylon
|
Kotlin
|
Source Code organization (Java's packages)
| |
derived from the file path of the source code file e.g. Class Person in package org.j4fry.mypkg must be in directory org/j4fry/mypkg/Person.ceylon
import org.j4fry.mypkg { Person }
|
uses namespaces e.g.
namespace org.j4fry.Person
with import statement
import org.j4fry.Person
|
Semicolons
| |
mandatory
|
optional
|
Return types (Java's void)
| |
uses void keyword which is, in fact, a return type named Void
shared abstract class Void() of Object|Nothing {}
|
uses Unit
Unit is a tuple of zero components (Tuple0) e.g.
fun myFunc( ) : Unit {… }
|
String interpolation
| |
…
shared variable Natural c := 10
…
writeLine("Value of c " c "!");
|
var c = 10
print("Value of c ${c} !")
|
Using types and type inference
| |
like Java
String s = "Ceylon"
With type inference
local s = "Ceylon"
|
Like Scala:
val c : Int
With type inference
val c = 10
|
Mutable and Immutable
| |
Mutable: local, variable (with := assignment)
class C { shared variable Natural c := 10 }
Immutable: without variable
class C { shared Natural c = 10; }
|
Mutable: var
public class C(){private var c : Int = 0;}
Immutable: val
public class C(){private val c : Int = 0;}
|
Fields and Properties (Java's Getter&Setter Freak-Show)
| |
Actually there are only properties (like in C#)
public class C() {
public val mutable_name : String
public var immutable_name : String
get() = …
set(value) { $immutable_name = value }
}
| |
Accessability, Visibility & Modifiers (Java's public, protected, private and default scope)
| |
Doesn't know the usual modifiers. Uses instead the shared keyword which controls the visibility of attributes, methods, classes, etc. depending on the context e.g.
non-shared class à class only visible to classes in the same package
shared class à class visible to other packages
shared class C( ) { … }
|
Uses Java's access modifiers private, protected and public. Additionally internal modifier. Probably internal works like the C# internal modifier e.g. visible in same namespace?
|
Enums (Java's enum)
| |
Not included. Use of clause (mention subtypes in the base-class signature) in combination with anonymous classes.
|
Like Java enums on steroids. You can subclass enums in Kotlin and there are some other enum features in Kotlin e.g. member overriding, enum pattern-matchin, etc.
|
Inheritance
| |
Uses the extends clause in class signature but different annotations to declare overridable and overridden methods.
class Base( ) {
shared default String doSth() {…}
}
class Subclass() extends Base() {
shared actual String doSth() {…}
}
| |
Overloading
| |
Not supported. Use optional parameters instead. Comment of Kotlin FAQ: "Ceylon is Java-incompatible, because it does not support overloading"
| |
Interfaces
| |
There are some heated discussions about Ceylon and Kotline already.
Pro Ceylon
Contra Ceylon
On the following websites you could find the resources which I have used to create the above mentioned comparison:
Resources Ceylon
http://relation.to/Tutorials/IntroductionToCeylon
https://docs.google.com/open?id=0B7DDHU_UOraGNDdiYzYwYTctMTJiMC00YjAwLWFhZjktNGFiZTQ4MjAzNzY1 (just a copy/paste PDF version of Gavin's tutorial)
https://docs.google.com/open?id=0B7DDHU_UOraGNDdiYzYwYTctMTJiMC00YjAwLWFhZjktNGFiZTQ4MjAzNzY1 (just a copy/paste PDF version of Gavin's tutorial)
Resources Kotlin
Hopefully you have learnt to understand the irony and sarcasm at the beginning of this blog post. It doesn't matter which programming language you choose. It is only important to try out new things because "Standstill".means("Falling Behind")
cheers Alex
Tags:
Ceylon,
Comparison,
Kotlin
Subscribe to:
Posts (Atom)