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/19 21:48]
djo Moving FP to its own top level page
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.
  
-===== Multi-core 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]].
  
-But software development still mostly is written ​to utilize a single thread ​of execution.+[[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.
  
-The more cores we have in our hardware, the more pronounced this mismatch will become, which will pressure the industry into changing software-development practices to take advantage of the new power.+ ===== Getting started =====
  
-===== Functional Programming =====+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 language, and because that same language works everywhere.
  
-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 ​single function over a large collection of data--can also be parallelized automatically if coded in a functional ​style.+A programmer can learn Javascript and do similar thingsbut I believe that Clojure and Clojurescript can take a programmer farther than Javascript ​can.  ​This is because Clojure is both first-class functional ​language and because it is a Lisp, which means that code is data is code is data....
  
-Please see [[fp:​home|Functional Programming Home]] ​for an index of my articles ​on FP.+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. 
 + 
 +  * 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 
 +  * Hoplon, Javlin, 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 =====
  
-===== Server-side Javascript =====+[[fp:​home|Functional programming]] (FP) helps process data in parallel--either on multiple cores or across a cluster.
  
-Javascript can be used as a functional language, and using Node.js can run on the server side.  I have little contact with it and currently work in large Java shop.  ​But to the extent that it crosses my radar, I'll make notes about that here.+That topic is sufficiently deep that it deserves ​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.1413769698.txt.gz · Last modified: 2014/10/19 21:48 by djo