Do you want to upgrade your GWT application or write a sizable web application? Dart is the efficient choice.
As a brief example, check out http://lightningdart.com
This presentation is updated October 2015 for Silicon Valley Code Camp
Short presentation about Dart presented before Code Lab.
Code Lab is available on the Github:
* https://github.com/Janamou/dart-codelab/
* https://github.com/Janamou/dart-codelab/wiki
Short presentation about Dart presented before Code Lab.
Code Lab is available on the Github:
* https://github.com/Janamou/dart-codelab/
* https://github.com/Janamou/dart-codelab/wiki
a brief overview of common programming paradigms with examples and discussion of functional programming principles. The purpose is to let the developers consider these programing ways very different to which they are used to, thus helping them think of solutions in unique ways.
A presentation I gave in Expert Days 2012. In this presentations I explain how most of the features in the C# language work, including Iterators, Lambdas, Linq, Dynamics, and more.
C++ is most often used programming language. This slide will help you to gain more knowledge on C++ programming. In this slide you will learn the fundamentals of C++ programming. The slide will also help you to fetch more details on Object Oriented Programming concepts. Each of the concept under Object Oriented Programming is explained in detail and in more smoother way as it will helpful for everyone to understand.
“The Semantic Web is a vision: the idea of having data on the Web defined and linked in a way that it can be used by machines not just for display purposes, but for automation, integration and reuse of data across various applications”
Understanding RDF: the Resource Description Framework in Context (1999)Dan Brickley
Dan Brickley, 3rd European Commission Metadata Workshop, Luxemburg, April 12th 1999
Understanding RDF: the Resource Description Framework in Context
http://ilrt.org/discovery/2001/01/understanding-rdf/
a brief overview of common programming paradigms with examples and discussion of functional programming principles. The purpose is to let the developers consider these programing ways very different to which they are used to, thus helping them think of solutions in unique ways.
A presentation I gave in Expert Days 2012. In this presentations I explain how most of the features in the C# language work, including Iterators, Lambdas, Linq, Dynamics, and more.
C++ is most often used programming language. This slide will help you to gain more knowledge on C++ programming. In this slide you will learn the fundamentals of C++ programming. The slide will also help you to fetch more details on Object Oriented Programming concepts. Each of the concept under Object Oriented Programming is explained in detail and in more smoother way as it will helpful for everyone to understand.
“The Semantic Web is a vision: the idea of having data on the Web defined and linked in a way that it can be used by machines not just for display purposes, but for automation, integration and reuse of data across various applications”
Understanding RDF: the Resource Description Framework in Context (1999)Dan Brickley
Dan Brickley, 3rd European Commission Metadata Workshop, Luxemburg, April 12th 1999
Understanding RDF: the Resource Description Framework in Context
http://ilrt.org/discovery/2001/01/understanding-rdf/
A First Course in RDF and RDFS (Resource Description Framework and Resource D...Mark Birbeck
This tutorial was given at SemTech 2008, on May 19th.
From the program: "RDF is a key W3C specification and a foundational component of the Semantic Web. This tutorial will explain the basics of RDF and how it functions as a key building block of semantic systems.
Mark Birbeck is the managing director of webBackplane. He has been creating software for many years, and his particular interests are the semantic web, and components that help to create dynamic, flexible, user interfaces. He has consulted, given training, spoken at conferences and contributed to books and articles on these and other topics. He is also heavily involved in the creation of new standards on these themes. Mark is an Invited Expert on both the XForms Working Group and the XHTML 2 Working Group, at the W3C. Over the years his work there has included devising and proposing RDFa."
NexJ CDM Overview: Better Understand Customers with NexJ Customer Data Manage...NexJ Systems Inc.
NexJ Customer Data Management (CDM) is uniquely designed to define and deliver meaningful information to cost-effectively increase business agility, resiliency, and operational efficiency.
What do you need to know about a public relations firm before hiring them? This short presentation outlines what you need to know about your own situation AND what you need to know from your potential partner.
From Prep to racing, see how managing your business is a lot like driving a racecar.
Check fuel, tire pressure, electrical, etc.
Test brakes, transmission, steering, etc.
Warm up the engine
Review plan of attack
Team review of plan, roles, responsibilities, and goals (metrics)
Play position strategy
Know when to draft and when to pass
Anticipate turns – start high, move to low and tight
Anticipate obstacles
Watch the gauges – frequent fast reads
Drive with “field awareness”
Avoid desperate moves – leave that to the rookies
Web 2.0 and the world of global collaboration v2010GroveSite
This is a presentation by Jane Hagen, VP Marketing at GroveSite, to a group of small business executives and companies in international trade. While Hagen discusses GroveSite collaboration software and wikis. the majority of the presentatiaon introduces Web 2.0 technologies such as blogs, podcasts, videocasts, wikis, social networking sites, and web conferencing.
Dart is a new language for the web, enabling you to write JavaScript on a secure and manageable way. No need to worry about "JavaScript: The bad parts".
This presentation concentrates on the developer experience converting from the Java based GWT to Dart.
Using Xtext for the first time is usually a very positive experience. Although Xtext is a complex generic framework, it is very easy to create your first Xtext-based editor, because of Xtext’s smart defaults and intuitive APIs. Even with minimal initial effort, the results are quite spectacular. Unfortunately the initial excitement often turns into disillusion as soon as you use your plugin on a big project.
Many development teams hit a performance wall as their plugin gets deployed and has to support larger projects. Internally, Xtext is a complex beast. The internals are carefully hidden from the user, but understanding them is critical to understand where the performance bottlenecks come from.
At Sigasi we have built commercial tool support for complex hardware description languages (VHDL, Verilog, SystemVerilog) using the Xtext framework. Our plugin needs to handle big industrial sized projects (>400k lines of code) that include large generated files (2 to 10 MB). To handle these kinds of projects we have developed a set of techniques over the last four years.
In this talk we will cover some performance critical pieces of the Xtext framework and evaluate what can be done to optimize it (think: parallel loading, caching, fast linking,…). We will also discuss some workarounds that can be used if nothing else works (light-weight editors, reducing the workload of the compiler).
A guide designed to help you master the art of web development. The roadmap provides a comprehensive step-by-step guide to learn foundational web technologies like HTML, CSS, & JavaScript, advanced frameworks, and concepts required for modern web development. It aims to equip aspiring developers with the necessary resources and tools to excel in the ever-evolving world of web development. 💡
A talk given at PHP Cambridge all about Python
The slides cover Python from any other programmer's prospective - but the talk as given involved comparisons to PHP.
BUD17-302: LLVM Internals #2
Speaker: Renato Golin, Peter Smith, Diana Picus, Omair Javaid, Adhemerval Zanella
Track: Toolchain
★ Session Summary ★
Continuing from LAS16 and, if we have time, introducing global isel that we’re working on.
---------------------------------------------------
★ Resources ★
Event Page: http://connect.linaro.org/resource/bud17/bud17-302/
Presentation:
Video:
---------------------------------------------------
★ Event Details ★
Linaro Connect Budapest 2017 (BUD17)
6-10 March 2017
Corinthia Hotel, Budapest,
Erzsébet krt. 43-49,
1073 Hungary
---------------------------------------------------
http://www.linaro.org
http://connect.linaro.org
---------------------------------------------------
Follow us on Social Media
https://www.facebook.com/LinaroOrg
https://twitter.com/linaroorg
https://www.youtube.com/user/linaroorg?sub_confirmation=1
https://www.linkedin.com/company/1026961
"
HelsinkiJS - Clojurescript for Javascript DevelopersJuho Teperi
Web development is nowadays dominated by many compile to JS languages. ClojureScript is one of such languages. This talk will give overview of ClojureScript ecosystem.
Introduction to InfluxDB, an Open Source Distributed Time Series Database by ...Hakka Labs
In this presentation, Paul introduces InfluxDB, a distributed time series database that he open sourced based on the backend infrastructure at Errplane. He talks about why you'd want a database specifically for time series and he covers the API and some of the key features of InfluxDB, including:
• Stores metrics (like Graphite) and events (like page views, exceptions, deploys)
• No external dependencies (self contained binary)
• Fast. Handles many thousands of writes per second on a single node
• HTTP API for reading and writing data
• SQL-like query language
• Distributed to scale out to many machines
• Built in aggregate and statistics functions
• Built in downsampling
Everybody in our team knows how to create stable and scalable software products. But in this case, we are using Docker... and it really helps us to concentrate on development and spend more time on code review & tests instead of troubleshooting issues with servers.
Robust C++ Task Systems Through Compile-time ChecksStoyan Nikolov
Task-based (aka job systems) engine architectures are becoming the de-facto standard for AAA game engines and software solutions. The talk explains how the task system in the Hummingbird game UI engine was designed to both be convenient and to avoid common programmer pitfalls. Advanced C++ techniques are employed to warn and shield the developer from errors at compile time.
These are the slides to the webinar about Custom Pregel algorithms in ArangoDB https://youtu.be/DWJ-nWUxsO8. It provides a brief introduction to the capabilities and use cases for Pregel.
PGConf APAC 2018 - High performance json postgre-sql vs. mongodbPGConf APAC
Speakers: Dominic Dwyer & Wei Shan Ang
This talk was presented in Percona Live Europe 2017. However, we did not have enough time to test against more scenario. We will be giving an updated talk with a more comprehensive tests and numbers. We hope to run it against citusDB and MongoRocks as well to provide a comprehensive comparison.
https://www.percona.com/live/e17/sessions/high-performance-json-postgresql-vs-mongodb
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
Advanced Flow Concepts Every Developer Should KnowPeter Caitens
Tim Combridge from Sensible Giraffe and Salesforce Ben presents some important tips that all developers should know when dealing with Flows in Salesforce.
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
Modern design is crucial in today's digital environment, and this is especially true for SharePoint intranets. The design of these digital hubs is critical to user engagement and productivity enhancement. They are the cornerstone of internal collaboration and interaction within enterprises.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTier1 app
Even though at surface level ‘java.lang.OutOfMemoryError’ appears as one single error; underlyingly there are 9 types of OutOfMemoryError. Each type of OutOfMemoryError has different causes, diagnosis approaches and solutions. This session equips you with the knowledge, tools, and techniques needed to troubleshoot and conquer OutOfMemoryError in all its forms, ensuring smoother, more efficient Java applications.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
A Comprehensive Look at Generative AI in Retail App Testing.pdfkalichargn70th171
Traditional software testing methods are being challenged in retail, where customer expectations and technological advancements continually shape the landscape. Enter generative AI—a transformative subset of artificial intelligence technologies poised to revolutionize software testing.
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Anthony Dahanne
Les Buildpacks existent depuis plus de 10 ans ! D’abord, ils étaient utilisés pour détecter et construire une application avant de la déployer sur certains PaaS. Ensuite, nous avons pu créer des images Docker (OCI) avec leur dernière génération, les Cloud Native Buildpacks (CNCF en incubation). Sont-ils une bonne alternative au Dockerfile ? Que sont les buildpacks Paketo ? Quelles communautés les soutiennent et comment ?
Venez le découvrir lors de cette session ignite
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
Your Digital Assistant.
Making complex approach simple. Straightforward process saves time. No more waiting to connect with people that matter to you. Safety first is not a cliché - Securely protect information in cloud storage to prevent any third party from accessing data.
Would you rather make your visitors feel burdened by making them wait? Or choose VizMan for a stress-free experience? VizMan is an automated visitor management system that works for any industries not limited to factories, societies, government institutes, and warehouses. A new age contactless way of logging information of visitors, employees, packages, and vehicles. VizMan is a digital logbook so it deters unnecessary use of paper or space since there is no requirement of bundles of registers that is left to collect dust in a corner of a room. Visitor’s essential details, helps in scheduling meetings for visitors and employees, and assists in supervising the attendance of the employees. With VizMan, visitors don’t need to wait for hours in long queues. VizMan handles visitors with the value they deserve because we know time is important to you.
Feasible Features
One Subscription, Four Modules – Admin, Employee, Receptionist, and Gatekeeper ensures confidentiality and prevents data from being manipulated
User Friendly – can be easily used on Android, iOS, and Web Interface
Multiple Accessibility – Log in through any device from any place at any time
One app for all industries – a Visitor Management System that works for any organisation.
Stress-free Sign-up
Visitor is registered and checked-in by the Receptionist
Host gets a notification, where they opt to Approve the meeting
Host notifies the Receptionist of the end of the meeting
Visitor is checked-out by the Receptionist
Host enters notes and remarks of the meeting
Customizable Components
Scheduling Meetings – Host can invite visitors for meetings and also approve, reject and reschedule meetings
Single/Bulk invites – Invitations can be sent individually to a visitor or collectively to many visitors
VIP Visitors – Additional security of data for VIP visitors to avoid misuse of information
Courier Management – Keeps a check on deliveries like commodities being delivered in and out of establishments
Alerts & Notifications – Get notified on SMS, email, and application
Parking Management – Manage availability of parking space
Individual log-in – Every user has their own log-in id
Visitor/Meeting Analytics – Evaluate notes and remarks of the meeting stored in the system
Visitor Management System is a secure and user friendly database manager that records, filters, tracks the visitors to your organization.
"Secure Your Premises with VizMan (VMS) – Get It Now"
Why React Native as a Strategic Advantage for Startup Innovation.pdfayushiqss
Do you know that React Native is being increasingly adopted by startups as well as big companies in the mobile app development industry? Big names like Facebook, Instagram, and Pinterest have already integrated this robust open-source framework.
In fact, according to a report by Statista, the number of React Native developers has been steadily increasing over the years, reaching an estimated 1.9 million by the end of 2024. This means that the demand for this framework in the job market has been growing making it a valuable skill.
But what makes React Native so popular for mobile application development? It offers excellent cross-platform capabilities among other benefits. This way, with React Native, developers can write code once and run it on both iOS and Android devices thus saving time and resources leading to shorter development cycles hence faster time-to-market for your app.
Let’s take the example of a startup, which wanted to release their app on both iOS and Android at once. Through the use of React Native they managed to create an app and bring it into the market within a very short period. This helped them gain an advantage over their competitors because they had access to a large user base who were able to generate revenue quickly for them.
Developing Distributed High-performance Computing Capabilities of an Open Sci...Globus
COVID-19 had an unprecedented impact on scientific collaboration. The pandemic and its broad response from the scientific community has forged new relationships among public health practitioners, mathematical modelers, and scientific computing specialists, while revealing critical gaps in exploiting advanced computing systems to support urgent decision making. Informed by our team’s work in applying high-performance computing in support of public health decision makers during the COVID-19 pandemic, we present how Globus technologies are enabling the development of an open science platform for robust epidemic analysis, with the goal of collaborative, secure, distributed, on-demand, and fast time-to-solution analyses to support public health.
2. Structure
● What & Why Dart?
● Dart Language & Tooling
● Questions
○ no need to wait until the end
3. Where are You coming from?
● Java
○ GWT
○ Servlet, JSP, JSF, ..
● .Net
● PHP, Python,
Ruby, …
● Mobile Native
Front-end
Technology
● Javascript
○ CoffeeScript
○ Typescript
○ Dart
✋
4. Who is Jorg Janke?
● Education: MBA
(Accounting), IT
● Jobs
○ ADV/Orga
○ Unisys - Prod.Mgr
○ Oracle - Dir Apps
○ Accorto since 1999
● Experience
○ Mainframe, Unix, Linux
○ Algol, PL/I, SmallTalk
○ Oracle DBA
○ Java since 1.1
○ Dart since 1.0
● Founder: Compiere
○ Open Source ERP
5. What does Accorto do?
● Professional Services Automation (PSA)
on Salesforce https://www.accorto.com
○ Projects
■ Gantt
■ Resource Planning
○ Capturing Time & Expense
○ Billing
7. What is Dart?
● OO & Functional Programming Language
○ Debugged in Dartium (Chrome)
○ Generating Javascript Executable dart2js
● Created/Maintained by Google
● ECMA-408 Standard
○ http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-408.pdf
● Targeting Client + Server
8. Dart Motivation
● Fast development cycles
● Fast & predictable performance
● Clear language semantics
● String types for great tool support
Change: from Dartium (own runtime engine)
➤ Javascript only
9. Lot’s of good Dart Overviews
Check
● https://www.dartlang.org
● Books ...
● https://www.dartlang.org/slides
I concentrate here on Developer experience
10. UI Options
Angular 2.0 - Now
https://github.com/ng2-dart-samples
● smaller gen JS
● 3x faster than 1.0
Dart Polymer
● Web Components
Bring Your Own
JS Framework
● JS Interop
Lightning Dart
● Lightning Experience UX
11. Dart Mobile - also native
● Share code
○ IOS
○ Android
○ Web
● Fletch (Runtime)
○ adds ~220k native App
○ on-the-fly code changes - also on iOS
UI for iOS
(Objective-C)
UI for Android
(Java)
Application Model
(Dart)
Runtime (Fletch)
Early Days!
14. Accorto UI Requirements/Features
● Mobile First
○ disconnected
● 24/7
○ active for days
● User
○ Expert/Guidance
○ Own Layout
■ switch
○ Analytics built in
● Admin
○ Add/Change Tables/
Fields/Processes/
Validations/...
● General
○ Dynamic Model Driven
Architecture
○ Multi-Tenant/Locale
○ AWS/GAE/OnPremise
15. What we wanted to avoid
● Multiple UIs - browser + naive(s)
● Hard to Develop
○ Good IDE - Step through Debugging
● Hard to Maintain (different code styles, …) .. in 5y
○ Developer Learning curve -- “Sonar”
● Hard to Understand
○ Partners/Customers to extend
● Fighting libraries - dependencies - conflicts
16. Alternatives evaluated
● GWT (Used)
○ Easy Java Integration
○ Stable “mature”
○ Very good build process
○ A bit heavy
○ Lost in Translation (Java
Structure <> JS features
class <> prototypal)
● JSP/JSF/…
○ Connected only
● Coffeescript
○ Step in the right direction
● Typescript
○ step in the right direction
● Javascript “pure”
○ improved IDE support &
tooling - JSLint
○ hard to build sizeable apps
○ too many different styles
○ no static analysis
17. Dart selection reasons
● Good DOM (Polyfill)
API
● “Close to the metal”
○ eventually JS
○ Web Components, ...
● Streams, Futures
● Libraries
● Static Type support
No worry about
Javascript:
The Bad Parts
new - this - null - falsiness -
for (in) - class ...
Douglas Crockford
prototypal vs class
18. Static Typing increases Productivity
● Static typing and
Documentation
○ Dynamic Languages
require Context
switches
● Source: Dr. A. Stefik, +
An empirical study on the impact of static
typing on software maintainability
http://web.cs.unlv.edu/stefika/Papers.php
19. Accorto Architecture now
● Java Backend
○ SOAP/REST
■ Salesforce
● Lightning Design
○ scss
● Dart
○ Grid/Form/..
○ Gantt Graph (svg)
● Protocol Buffers
○ binary (smaller than
JSON, especially
data rows)
○ fast (~ same
de/serializing speed)
○ Data Transfer
Objects (get/set..)
○ for many languages
20. Lightning Design System
● Salesforce UX
https://www.lightningdesignsystem.com
○ SCSS - Font - Icons
○ General Purpose
■ Not restricted to
salesforce.com
● Lightning Dart
○ Functionality
● Components
○ Button … Picklist
● Controller
○ Form, Object
27. Language Features
● Cannot cover all
○ for complete details see dartlang.org
● I like the most
○ single inheritance .. with mixins
■ intro to prototypal + functional programming
● with a safety net
○ named parameters
28. Java Package => Libraries
Java
● Directory = package
● File = class
● FileName = className
Dart
● Directory, FileName
does not matter
... if you have good memory
library libx;
// part = code imports
part “aa/bb/file.dart”;
part of libx;
class a{}
class b{}
aa/bb/file.dart
29. Great! Optional / Named Parameters
int f1 (int mandatory, {int optional: 2}) {..}
use:
f1(2);
f1(2, optional: 3);
int f2 (int mandatory, [int second = 2]) {..}
use:
f2(2);
f2(1,2);
30. Named Constructors
● MyClass(String this.p1, int this.i1) {}
○ saves the: this.p1 = p1;
● MyClass.fromXml(String xml) {..}
○ No overloading - better documentation
○ alternative
■ static MyClass parse(String xml) {..}
31. No overloading - but not missing it!
workaround if you want to:
String dump(dynamic param) {
if (param is X1) return _dumpX1(param as X1);
if (param is X2) return _dumpX2(param as X2);
}
String _dumpX1(X1 value) {..}
String _dumpX2(X2 value) {..}
33. Great! Function variables
● Example
○ static int parse(String s, { int onError(String s)});
● Use
○ int xx=int.parse(“12”);
○ int xx=int.parse(“12”, onError: (String s) {return -1;});
○ int xx=int.parse(“12”, onError: intErrorHandler);
int intErrorHandler(String s) {return -1;}
… if you are
coming from
Java7
… this and Streams eliminate “callback hell”
34. Public - Internal - controlled
class X {
int public;
int _internal;
int get getter {..}
void set setter (int value) {..}
}
Use: X xx = new X();
xx.public = 5; // r/w
xx._internal = 5; // Library
int z = xx.getter;
xx.setter = 5;
… a bit confusing at first when to use what:
- function - isEmpty()
- or attribute - isEmpty
35. Better Strings
String s = ’’’Multiple
Line
String’’’;
s = “String” “ in” “ parts”;
s = ‘This “works” too’;
s = r’raw string n’;
s = “String with ${param}”;
if (s.isEmpty) {}
if (s.isNotEmpty) {}
trivial, but I like it
Java char <>
CodeUnit|CharCode
36. Type Surprises (... coming from Java)
int active = 5;
:
int ms = initial;
if (active > 10)
ms += (active/10) * 200;
… compiles fine
ms is an int - right?
Runtime:
● double
Fix:
ms += (active~/10) * 200;
… Analyzer catches direct
assignments but not +=
37. Type Surprises - Lists
void add(List<int> ints) {..}
add([1,”a”, 3]);
List<O1> o1List = …;
List<O2> o2List = …;
for (O1 in o2List) {..}
… compiles fine
Runtime Error
… compiler (analyser)
should catch that
… certainly better than
plain Javascript
38. Libraries - Pub
Core Libraries
● async
● collection
● html + js
● io (server)
● svg, web_gl, ...
http://pub.dartlang.org
● angular
● googleapis
● dquery (jQuery)
● web_components
polymer
● intlwell designed
… but often not immutable
use js (libs) directly
39. Upgrades
● Expect a new Version every 1-2 months
○ independent from library upgrade cycle
○ Started Dart 1.0 - Nov 2013
■ 1.12.0 - Aug 2015
■ 1.13 .. looming
● Upgrade is quite painless
○ Also Library: pub upgrade
40. Dart Wishlist
● BigDecimal ⇉ Dec64 (vs double)
● Ability to return tuples
○ … like Scala
● Full Immutable library option
● CSS (Less/Saas) integration
○ Package + Minify css (like GWT)
Concentrate on Client!
41. Dart Productivity: Good!
● Easy to get going
○ Java ⇒ Functional
● Good Tools
○ not on Java level
● Rich Libraries
● Profiling
○ Observatory
● Mostly Unsurprising
semantics
○ No Strong Typing
(like Scala)
● Doc a bit light
○ helps if you know
Javascript/HTML
42. Summary (why not Javascript directly)
● Productivity
○ typed language
○ concise
■ especially async
○ tooling
○ libraries
○ debug & test
● Maintainability
○ dart2js optimizes
● Dev Compiler
○ create JS libraries
(alpha)
● Maintainable and
efficient Javascript
○ Very hard to manually
do - collaboratively
■ JS the good parts
43. When “back” to Java Programming
● where are named parameters?
● why is async so hard?
● very happy to get back to
● Dart:
The better Javascript !