User Tools

Site Tools


java:home

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
java:home [2014/10/25 13:21]
djo [Multi-core programming]
java:home [2016/09/18 21:17] (current)
djo [Getting started]
Line 1: Line 1:
-====== ​On the Server Side ======+====== ​Data-first Applications ​======
  
-Server-side development ​is changing too, but differently and more slowly than on the client. ​ Some forces ​I see changing server-side development are:+This is a tutorial/​vision page describing ​the state of the art as I see it today.
  
-===== Parallel programming =====+Data has become more important than code.
  
-Multi-core is here.  +  * Collecting it 
 +  * Analyzing it 
 +  * Storing it
  
-8-way servers ​are common these days.  ​4-way cell phones ​are here.  ​The laptop on which I'm writing this blog has 4 cores; so does my tablet.+The web plus mobile apps are the user-interface of today'​s stack.  ​Virtual Reality and Augmented Reality ​are becoming important quickly as a platform in their own right.  ​Javascript ​has become more important than Java, [[https://​github.com/​eclipsesource/​J2V8|both on the server and inside the browser]].
  
-And it goes without saying ​that most large-scale ​applications ​are built using scaleable clusters on AWS or similar cluster services.+[[https://​www.heroku.com|Heroku]],​ [[https://​aws.amazon.com/​|Amazon Web Services]], and similar compute and storage services make it possible for anyone with an idea to write applications ​that anybody in the world can use, and to take advantage of the data collected by those applications.
  
-But software development still mostly is written to utilize a single thread of execution.+ ===== Getting started =====
  
-The more cores we have in our hardware, ​the more pronounced this mismatch will becomewhich will pressure the industry into changing software-development practices to take advantage of the new power.+I believe that Clojure and Clojurescript (Clojure inside ​the web browser) provide an opportunity to learn to develop web applications unlike anything that has come before. ​ This is because Clojure is a first-class functional programming languageand because that same language works everywhere.
  
 +A programmer can learn Javascript and do similar things, but I believe that Clojure and Clojurescript can take a programmer farther than Javascript can.  This is because Clojure is both a first-class functional language and because it is a Lisp, which means that code is data is code is data....
  
-===== Functional Programming =====+Here is my (current) favorite stack for building and deploying data-first applications. ​ To those who have asked me to share a "way in" to modern software development,​ this is my list of topics to search on Google.
  
-Functional programming (FP) is one promising means of taking advantage of multi-core processors.  ​When done in a pure manneroften the compiler can parallelize certain tasks automatically.  ​Other operations--such as applying a single function over large collection of data--can also be parallelized automatically if coded in a functional style.+  * Git / Github 
 +  * Basic Linux/Unix command line skills 
 +  * jitpack.io to share libraries with myself and others 
 +  * Clojurescript and Javascript for building single-page web applications 
 +  * HoplonJavlin, and Castra to create a unified programming environment on the web browser and inside ​the server using Clojure and Clojurescript. 
 +  * A-Frame for virtual reality applications delivered via the web 
 +  * Clojure and/or Scala (server) 
 +  * Boot and Leiningen for building libraries 
 +  * Pouchdb (both inside the browser and inside the server) 
 +  * SQL as needed. ​ Postgres is decent ​as a standalone database. ​ If you really have to scale to big data moving fast, consider Cassandra backed by Amazon S3 on AWS Use Netflix projects available on Github to wire them together. 
 +  * The j2v8 library for integrating the best of Node.js and Java inside a server 
 + 
 + 
 +===== Functional Programming =====
  
-Please see [[fp:​home|Functional ​Programming Home]] for an index of my articles on FP.+[[fp:​home|Functional ​programming]] (FP) helps process data in parallel--either on multiple cores or across a cluster.
  
 +That topic is sufficiently deep that it deserves a page of its own.  :-)
  
 ===== General Java ===== ===== General Java =====
  
-Here are some general ​notes about Java that are applicable to server-side developers.+General ​notes about JVM development:​
  
    * [[blog:In Java 5, 0 is not always equal to 0]]    * [[blog:In Java 5, 0 is not always equal to 0]]
    * [[Code Bloat Thread from E4 mailing list]]    * [[Code Bloat Thread from E4 mailing list]]
  
java/home.1414257693.txt.gz · Last modified: 2014/10/25 13:21 by djo