SlideShare a Scribd company logo
1 of 15
Download to read offline
Pronounced S-pro-ut-Co-re

                                                                                                          1

* Hello everyone!
* 2nd Rotterdam.rb meetup.
* Before starting with my presentation:
- Happy woman’s day to every woman in the room (it is not a sexist thing, I’m just being a gentleman).
- Thanks to Finalist IT Group for hosting this meetup and Stefan and Iain for inviting me here tonight.
* Disclaimer:
- I am still a novice with this technology.
- I want to tell you my experience with it so far.
- I will not disappoint you, you will see some code!
Hi! I’m Javier.
                                                                                                                              2

* I’ve been a rocker ever since I can remember.
* I’ve spent 7 years studying Software Engineering in Argentina and in France.
* I’ve been a working on Software for more than 10 years now.
* I’ve just founded Rock & Code (http://rock-n-code.com), a company that aims at providing solutions, integrating Software, and
Marketing and Communications.
* I’m the current organizer of the Amsterdam.rb Ruby group.
* I host 2 radio shows on Internet: “Rock & Roll” and “Hangover”.
Context.
                                                                                                                                     3

* Before diving into the core of SproutCore, I would like to briefly touch on the key events that have created the context in which
we are living today.
* In the beginning, in 1940, there were only Z3, Mark I & II, ENIAC and everything was very simple until 1969 when the ARPANet
successfully connected two remote nodes.
* The network has change the perception of system architecture forever.
* Since that moment, we have been thinking in server-client and distribute architectures: the terminal was born.
* Two main revolutions started in the 1980s:
+ Computers for the masses:
- Microsoft.
- Apple.
- Open Source & Linux.
+ The hunger for data transmission reached a milestone:
- In the early 1990s the WWW was created.
- Along came the Web Browser.
* Recently, another revolution has been underway:
+ Clients get smart and connected:
- Phone, readers, games and handheld consoles, home appliances have an Internet browser.
- An overwhelming amount of data is available on the Internet.
* Challenges for developers are to provide (if possible native) Software for multiple platforms.
* Solution:
- the Web Browser is the common ground.
- HTML5 has been taking the Web to another level.
* Development platforms:
- native applications: Air, Flex, Titanium
- cloud applications: SproutCore, Cappuccino
SproutCore?
                                                                                                                                 4

* SproutCore is:
- a MVC (Model-View-Controller) web client-side development framework.
- for creating fast, native-style cloud applications on the Web Browser.
- It does not require to install any plug-in on your Web Browser.
- It provides desktop-like features:
+ drag and drop.
+ undo/redo.
+ keyboard shortcuts.
+ sophisticated user interfaces.
+ text and image localization.
+ rich internal data model.
- It eliminates “glue” code:
= Properties: stores a state such as “firstName”, “isEnabled” of a button or even a computable property.
= Observers: method that will be called when a property changes.
= Bindings: this concept is borrowed from the Cocoa framework whereby the properties of two objects can be bound together so
that whenever one binding changes, the other one will change as well. It is a way to hook up models, views, and controllers and
this makes an application easier to maintain.
+ These are working together in order to store the state of every property within an application and also they relay any change to
the pieces of the code when a particular event happens.
- support for Unit Testing.
- support for IE6+, Opera9+, FF2+, Safari3+, Chrome, others.
- suitable for both on-line and off-line applications.
- It is Open Source.
Separation.




                                                                                              5

* It allows the seamless separation between the front-end and the back-end.
* Out-of-the-box support for RESTful back-ends that accept and deliver JSON-formatted data:
- Ruby on Rails.
- Sinatra.
- Django.
- Node.js.
- CouchDB.
- PHP.
- ASP.Net.
- Etc.
* It interacts with any HTTP application server at runtime via XHR calls:
- Ruby on Rails.
- Tomcat.
- WebObjects.
- WebDav.
User Interface.
                                                                           6

* Beautiful interfaces for desktop-like applications on the Web Browser.
* Demo of the sample-controls.
script
                                             It is not Java.
                                                                                                                                  7

* Applications are Web standard HTML, CSS and Javascript.
* With the exception of the templates (HTML written in ERB), every part of your application should be written in Javascript and
each should use the SC class hierarchy.
* Have a set of tools, which are written in Ruby, are directly influenced by Rails, and adopt Javascript best practices.
Generators.
                                                                                             8

* They help the development by modularizing the pieces that can be combined automatically.
* Generate completely or partially a standard application directory.
* It is possible to create the following modules:
- app.
- controller.
- data-source.
- design.
- framework.
- language.
- model.
- page.
- project.
- test.
- theme.
- view.
* Command line:
- sc-init <app>
- sc-gen <type> <class>
Server.
                                                                                 9

* Development server for application testing written in Ruby and EventMachine.
* Command line: sc-server
Build Tools.
                                                                                                                                     10

* Applications are deployed as a static directory of files that is easy to serve and it has no dynamic server-side code whatsoever.
* The files are combined, packed, minimized, and they are cache-friendly.
* Static content is the fastest way to serve content on the Web and your application can use the caching servers and other high-
volume distribution networks to its advantage.
* Command line: sc-build <app>
sudo gem install sproutcore
                                                                                                                11

* To install SproutCore in your development machine, you just need to write this line into your command line.
* This gem works in both v1.8.7 and v1.9.1 of the Ruby interpreter. (It works!)
* The SproutCore gem performs better under Ruby 1.9.1.
Integration.




                                             12

* Now, let’s see some code!
Conclusions.
                                                                                                            13

*   SproutCore has just reached v1.0.
*   Great technology for fast (off/on)line desktop-like cloud applications supported by the Web Browsers.
*   MVC philosophy is wide-spread so it is easy to understand and adopt.
*   Easier maintenance due to the Properties-Observers-Bindings relationship.
*   An active Open Source project.
*   Support for any RESTful back-ends that accept and deliver JSON-formatted data.
*   Nice user interface.
*   You are not required to learn another Programming Language.
*   Great generators, server, and build tools written in Ruby.
*   There are still some rough edges to polish.
*   Lack of updated documentation and illustrative examples.
*   No graphic interface designer for applications.
Questions?
                                                           14

* Now the most important part of the presentation!
* Does anybody have any question? :)
•    http://sproutcore.com

          •    http://wiki.sproutcore.com

          •    http://docs.sproutcore.com

          •    http://github.com/sproutit/sproutcore

          •    http://groups.google.com/group/sproutcore

          •    #sproutcore on irc.freenode.net


                                                                     15

* If you are interested in SproutCore, then check these links out!

More Related Content

Similar to Introduction to SproutCore: A JavaScript MVC Framework

DockerDay2015: Keynote
DockerDay2015: KeynoteDockerDay2015: Keynote
DockerDay2015: KeynoteDocker-Hanoi
 
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisThe complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisOW2
 
The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)Samsung Open Source Group
 
Native - Hybrid - Web Mobile Architectures
Native - Hybrid - Web Mobile ArchitecturesNative - Hybrid - Web Mobile Architectures
Native - Hybrid - Web Mobile ArchitecturesPhong Le Duy
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraLINAGORA
 
Javascript Essentials - Cisco Live Barcelona 2019
Javascript Essentials - Cisco Live Barcelona 2019Javascript Essentials - Cisco Live Barcelona 2019
Javascript Essentials - Cisco Live Barcelona 2019Cisco DevNet
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)Geekstone
 
.Net: Introduction, trends and future
.Net: Introduction, trends and future.Net: Introduction, trends and future
.Net: Introduction, trends and futureBishnu Rawal
 
A Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using DockerA Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using DockerAjeet Singh Raina
 
Net training in bhubaneswar
Net training in bhubaneswar Net training in bhubaneswar
Net training in bhubaneswar litbbsr
 
Built Cross-Platform Application with .NET Core Development.pdf
Built Cross-Platform Application with .NET Core Development.pdfBuilt Cross-Platform Application with .NET Core Development.pdf
Built Cross-Platform Application with .NET Core Development.pdfI-Verve Inc
 
Getting Your Hooks Into Cordova
Getting Your Hooks Into CordovaGetting Your Hooks Into Cordova
Getting Your Hooks Into CordovadevObjective
 
Getting your Hooks into Cordova
Getting your Hooks into CordovaGetting your Hooks into Cordova
Getting your Hooks into CordovaGavin Pickin
 
Don't touch the mobile parts
Don't touch the mobile partsDon't touch the mobile parts
Don't touch the mobile partsFrancesco Fullone
 
Rich Web Applications with Aspenware
Rich Web Applications with AspenwareRich Web Applications with Aspenware
Rich Web Applications with AspenwareAspenware
 
Delphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Delphi Prism for iPhone/iPad and Linux with Mono and MonotouchDelphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Delphi Prism for iPhone/iPad and Linux with Mono and MonotouchAndreano Lanusse
 

Similar to Introduction to SproutCore: A JavaScript MVC Framework (20)

DockerDay2015: Keynote
DockerDay2015: KeynoteDockerDay2015: Keynote
DockerDay2015: Keynote
 
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisThe complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
 
webthing-floss-iot-20180607rzr
webthing-floss-iot-20180607rzrwebthing-floss-iot-20180607rzr
webthing-floss-iot-20180607rzr
 
The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)
 
Native - Hybrid - Web Mobile Architectures
Native - Hybrid - Web Mobile ArchitecturesNative - Hybrid - Web Mobile Architectures
Native - Hybrid - Web Mobile Architectures
 
wotxr-20190320rzr
wotxr-20190320rzrwotxr-20190320rzr
wotxr-20190320rzr
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
 
Javascript Essentials - Cisco Live Barcelona 2019
Javascript Essentials - Cisco Live Barcelona 2019Javascript Essentials - Cisco Live Barcelona 2019
Javascript Essentials - Cisco Live Barcelona 2019
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)
 
.Net: Introduction, trends and future
.Net: Introduction, trends and future.Net: Introduction, trends and future
.Net: Introduction, trends and future
 
A Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using DockerA Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using Docker
 
Net training in bhubaneswar
Net training in bhubaneswar Net training in bhubaneswar
Net training in bhubaneswar
 
Built Cross-Platform Application with .NET Core Development.pdf
Built Cross-Platform Application with .NET Core Development.pdfBuilt Cross-Platform Application with .NET Core Development.pdf
Built Cross-Platform Application with .NET Core Development.pdf
 
Getting Your Hooks Into Cordova
Getting Your Hooks Into CordovaGetting Your Hooks Into Cordova
Getting Your Hooks Into Cordova
 
Getting your Hooks into Cordova
Getting your Hooks into CordovaGetting your Hooks into Cordova
Getting your Hooks into Cordova
 
Getting Your Hooks into Cordova
Getting Your Hooks into CordovaGetting Your Hooks into Cordova
Getting Your Hooks into Cordova
 
Don't touch the mobile parts
Don't touch the mobile partsDon't touch the mobile parts
Don't touch the mobile parts
 
Rich Web Applications with Aspenware
Rich Web Applications with AspenwareRich Web Applications with Aspenware
Rich Web Applications with Aspenware
 
Lecture 10
Lecture 10Lecture 10
Lecture 10
 
Delphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Delphi Prism for iPhone/iPad and Linux with Mono and MonotouchDelphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Delphi Prism for iPhone/iPad and Linux with Mono and Monotouch
 

Recently uploaded

Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 

Recently uploaded (20)

Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 

Introduction to SproutCore: A JavaScript MVC Framework

  • 1. Pronounced S-pro-ut-Co-re 1 * Hello everyone! * 2nd Rotterdam.rb meetup. * Before starting with my presentation: - Happy woman’s day to every woman in the room (it is not a sexist thing, I’m just being a gentleman). - Thanks to Finalist IT Group for hosting this meetup and Stefan and Iain for inviting me here tonight. * Disclaimer: - I am still a novice with this technology. - I want to tell you my experience with it so far. - I will not disappoint you, you will see some code!
  • 2. Hi! I’m Javier. 2 * I’ve been a rocker ever since I can remember. * I’ve spent 7 years studying Software Engineering in Argentina and in France. * I’ve been a working on Software for more than 10 years now. * I’ve just founded Rock & Code (http://rock-n-code.com), a company that aims at providing solutions, integrating Software, and Marketing and Communications. * I’m the current organizer of the Amsterdam.rb Ruby group. * I host 2 radio shows on Internet: “Rock & Roll” and “Hangover”.
  • 3. Context. 3 * Before diving into the core of SproutCore, I would like to briefly touch on the key events that have created the context in which we are living today. * In the beginning, in 1940, there were only Z3, Mark I & II, ENIAC and everything was very simple until 1969 when the ARPANet successfully connected two remote nodes. * The network has change the perception of system architecture forever. * Since that moment, we have been thinking in server-client and distribute architectures: the terminal was born. * Two main revolutions started in the 1980s: + Computers for the masses: - Microsoft. - Apple. - Open Source & Linux. + The hunger for data transmission reached a milestone: - In the early 1990s the WWW was created. - Along came the Web Browser. * Recently, another revolution has been underway: + Clients get smart and connected: - Phone, readers, games and handheld consoles, home appliances have an Internet browser. - An overwhelming amount of data is available on the Internet. * Challenges for developers are to provide (if possible native) Software for multiple platforms. * Solution: - the Web Browser is the common ground. - HTML5 has been taking the Web to another level. * Development platforms: - native applications: Air, Flex, Titanium - cloud applications: SproutCore, Cappuccino
  • 4. SproutCore? 4 * SproutCore is: - a MVC (Model-View-Controller) web client-side development framework. - for creating fast, native-style cloud applications on the Web Browser. - It does not require to install any plug-in on your Web Browser. - It provides desktop-like features: + drag and drop. + undo/redo. + keyboard shortcuts. + sophisticated user interfaces. + text and image localization. + rich internal data model. - It eliminates “glue” code: = Properties: stores a state such as “firstName”, “isEnabled” of a button or even a computable property. = Observers: method that will be called when a property changes. = Bindings: this concept is borrowed from the Cocoa framework whereby the properties of two objects can be bound together so that whenever one binding changes, the other one will change as well. It is a way to hook up models, views, and controllers and this makes an application easier to maintain. + These are working together in order to store the state of every property within an application and also they relay any change to the pieces of the code when a particular event happens. - support for Unit Testing. - support for IE6+, Opera9+, FF2+, Safari3+, Chrome, others. - suitable for both on-line and off-line applications. - It is Open Source.
  • 5. Separation. 5 * It allows the seamless separation between the front-end and the back-end. * Out-of-the-box support for RESTful back-ends that accept and deliver JSON-formatted data: - Ruby on Rails. - Sinatra. - Django. - Node.js. - CouchDB. - PHP. - ASP.Net. - Etc. * It interacts with any HTTP application server at runtime via XHR calls: - Ruby on Rails. - Tomcat. - WebObjects. - WebDav.
  • 6. User Interface. 6 * Beautiful interfaces for desktop-like applications on the Web Browser. * Demo of the sample-controls.
  • 7. script It is not Java. 7 * Applications are Web standard HTML, CSS and Javascript. * With the exception of the templates (HTML written in ERB), every part of your application should be written in Javascript and each should use the SC class hierarchy. * Have a set of tools, which are written in Ruby, are directly influenced by Rails, and adopt Javascript best practices.
  • 8. Generators. 8 * They help the development by modularizing the pieces that can be combined automatically. * Generate completely or partially a standard application directory. * It is possible to create the following modules: - app. - controller. - data-source. - design. - framework. - language. - model. - page. - project. - test. - theme. - view. * Command line: - sc-init <app> - sc-gen <type> <class>
  • 9. Server. 9 * Development server for application testing written in Ruby and EventMachine. * Command line: sc-server
  • 10. Build Tools. 10 * Applications are deployed as a static directory of files that is easy to serve and it has no dynamic server-side code whatsoever. * The files are combined, packed, minimized, and they are cache-friendly. * Static content is the fastest way to serve content on the Web and your application can use the caching servers and other high- volume distribution networks to its advantage. * Command line: sc-build <app>
  • 11. sudo gem install sproutcore 11 * To install SproutCore in your development machine, you just need to write this line into your command line. * This gem works in both v1.8.7 and v1.9.1 of the Ruby interpreter. (It works!) * The SproutCore gem performs better under Ruby 1.9.1.
  • 12. Integration. 12 * Now, let’s see some code!
  • 13. Conclusions. 13 * SproutCore has just reached v1.0. * Great technology for fast (off/on)line desktop-like cloud applications supported by the Web Browsers. * MVC philosophy is wide-spread so it is easy to understand and adopt. * Easier maintenance due to the Properties-Observers-Bindings relationship. * An active Open Source project. * Support for any RESTful back-ends that accept and deliver JSON-formatted data. * Nice user interface. * You are not required to learn another Programming Language. * Great generators, server, and build tools written in Ruby. * There are still some rough edges to polish. * Lack of updated documentation and illustrative examples. * No graphic interface designer for applications.
  • 14. Questions? 14 * Now the most important part of the presentation! * Does anybody have any question? :)
  • 15. http://sproutcore.com • http://wiki.sproutcore.com • http://docs.sproutcore.com • http://github.com/sproutit/sproutcore • http://groups.google.com/group/sproutcore • #sproutcore on irc.freenode.net 15 * If you are interested in SproutCore, then check these links out!