I used Playframework as a hobby for a little application a while ago. I love Scala, it’s my favorite language but at work I use C#.
I find the documentation to be good in general, perhaps the search could be improved a little bit. Imo, the search drop-down popup is a bit weird - I am so used to search engines were I type something and press enter and I go to a results page. If I search Sec the pop-up comes back with about 4 results. I get the impression that it doesn’t find everything. If I come back to the search page I have to type something in the search box to make the popup appear again. It’s annoying.
Anyway, as a beginner I find working with Playframework harder than other web servers, particularly getting off the ground and running something simple that authenticates a user, connects to a database and returns some results. If I were to compare it with Tomcat or Weblogic which I worked with in the past, they are a breeze. Let’s take it by points:
- authentication, authorization - it’s almost non-existent out-of-the-box - I am redirected to some third-party products which may or may not be maintained. This is a crucial piece of a web server right from the get go. It should have been done and solved by now - it can’t be left to third-party entities. I work in a windows environment and I need to authenticate against AD. I would have to spend probably days to figure out what to use and how to do it in play. Tomcat/Weblogic have AD plugins that can be configured and used as far as I know.
- connection to a database - when I developed the app in Play, the server didn’t start if the database server was down. I had to modify the source code of the db module to get rid of this issue. Again, I had to spend time to read the code and understand what it does. Compare that to Weblogic or Tomcat where I configure a connection pool and everything was taken care of with all the parameters that one can think of to retry connections, close connections etc.
- when I developed the app I bumped into some security filters - I wasn’t aware I had to implement them in the page - well, maybe it was a good thing. I read the docs and I did it.
- programming wise, everything is harder in Play. I have to stop, take my time to read the examples, the documentation and understand what everything does and how things tie together. I am currently working with C# and Web Api 2.0. It is so simple in .net, that I had a shock when I tried to do the same thing with Play following the Play Rest Api example. Truly, I had a wtf moment.
- another one that I was curious about was the ability to deploy in an exploded format. Sometimes let’s say I want just to modify a script file or some images and instead of deploying the whole thing again I want to be able to copy the new files (images). Is it possible?
Anyway, that’s my experience. Perhaps you should take it with a grain salt :-)
One other thing, I met a few folks at a scala course and they all seem to use http4s and the typelevel stack. I was surprised. That should pause you for some thoughts.