User Tools

Site Tools


Sidebar

Dave Orme muses about agile and functional programming.

My current work emphasizes SOA applications using Scala, Kubernetes, and AWS with a React-based SPA front-end. I'm also interested in progressive web applications and developer tools.


Blog

Scala, Clojure, and FP

Agile

The Cloud

Data-First Development

Older work

Coconut Palm Software home


Donate Bitcoin:

1Ecnr9vtkC8b9FvmQjQaJ9ZsHB127UzVD6

Keywords:

Kubernetes, Docker, Streaming Data, Spark, Scala, Clojure, OSGi, Karaf, GCP, AWS, SQL

Disclaimer:

Everything I say here is my own opinion and not necessarily that of my employer.

java:home

This is an old revision of the document!


On the Server Side

Server-side development is changing too, but differently and more slowly than on the client. Some forces I see changing server-side development are:

Multi-core programming

Multi-core is here.

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.

But software development still mostly is written to utilize a single thread of execution.

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.

Functional Programming

Functional programming is one promising means of taking advantage of multi-core processors. When done in a pure manner, often the compiler can parallelize certain tasks automatically. Other operations–such as applying a single function over a large collection of data–can also be parallelized automatically if coded in a functional style.

Functional Programming in Java

I consider Functional programming here to embody not just the idea of using pure functions whenever possible, but ideas that are more commonly associated with languages like Haskell or Scala that are designed from the beginning to support functional programming.

Some of these ideas are cumbersome, but surprisingly–with a little creativity–we can gain quite a bit of mileage and traction by implementing and adopting them in Java.

Some–like the Option/Maybe monad–aren't strictly functional programming ideas at all, but can be viewed as object oriented design patterns that happened to be discovered and cataloged by the functional programming community rather than by the “Gang of Four”.

Functional programming is officially coming to Java with Java 8. But we don't have to wait until then to begin taking advantages of features normally considered reserved for languages that directly support functional programming. This set of articles describes how we can “skate to where the puck will be” and adopt ideas from the functional programming community today.

Server-side Javascript

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 a large Java shop. But to the extent that it crosses my radar, I'll make notes about that here.

General Java

Here are some general notes about Java that are applicable to server-side developers.

java/home.1413598111.txt.gz · Last modified: 2014/10/19 21:48 (external edit)