Live data from Hacker News

Choosing a Web Framework/Language Combo for the Next Decade

jacquesmattheij.com

171–180 of 228 posts

Re: Choosing a Web Framework/Language Combo for the Next Decade

#171

Google could give a huge boost in confidence in Go, tomorrow (or rather within 2 years) - just make Go the official main language to use for writing Android apps and start deprecating Java. Once it does that, I don't think there will be any doubt in anyone's mind that Go has less chance of survival than say Java. In fact, Java will immediately lose confidence once Android drops Java (in a reasonable 3-5 year timefram…

Surely it could, but the problem with that strategy is that Android is of far, far greater strategic importance than Go. Rocking the boat on the former to boost the latter doesn't make any sense at all.

Re: Choosing a Web Framework/Language Combo for the Next Decade

#172
> Python has always been a mixed bag for me. What I wrote in it worked, when I wrote it. Then, a little while later it stops working, either because some module that it depends on gets deprecated or changed in an incompatible way, starts to exhibit weird behavior or even disappears.

This is no longer a problem in Python because of virtualenv and pip, which together allow you to tie down the version numbers of all the dependencies an application uses.

Re: Choosing a Web Framework/Language Combo for the Next Decade

#173

Earlier quoted context omitted.

Excellent input, thank you!

fwiw http://www.google.com/trends/explore#q=Laravel%2C%20symfony%...

Updated to include Symfony2:

http://www.google.com/trends/explore#q=Laravel%2C%20symfony%...

Re: Choosing a Web Framework/Language Combo for the Next Decade

#174

Goodness, just pick a framework and start building. There's no way you're going to make the right choice so just choose whichever language you're most comfortable coding in and start building. Creating 12 prototypes to narrow down 12 frameworks? Does this strike anyone else as an insane waste of time?

In the long run this should save me time.

Well, that's the classic argument for yak shaving. Most if not all of the frameworks you analyzed will be more than adequate for the app you're going to build. What it should come down to is what you're comfortable with. Focus on the product you want to build, not the tools you are using to build the product.

Re: Choosing a Web Framework/Language Combo for the Next Decade

#175
Sorry if I'm harsh, but I think this is a terrible way to choose a programming language. It is suggesting a one size fits all approach, and I'm kind of disappointed to see a lot of languages thrown out without objective scrutiny.

Also, it could be foolhardy to pick just one for the next 10 years. When all you have is a hammer everything looks like a nail.

It might help to try to think of the specific constraints that you envision running into. How can your technology choice help address those concerns and simplify your stack or speed of development, or ability to hire talent? You should easily come up with over a dozen items that you will want to be able to address with your choice of technology.

Re: Choosing a Web Framework/Language Combo for the Next Decade

#176

Earlier quoted context omitted.

I don't think the credit for the java implementation of 'Lambda' should go to Haskell pioneering it and proving it useful. First class functions were present in lots of other languages, most notably the lisp family long before.

Generics also were not a new idea back then...and let's not forget Gilad and Martin, whose backgrounds weren't haskell.

Does anybody know when C++ got templates?

Re: Choosing a Web Framework/Language Combo for the Next Decade

#177
post #141

Being a Java/JVM expert, I wanted to add a couple of thoughts to your process. I'm not insinuating that you should change anything you've done! - Dropping JBoss Seam as a framework was a good choice because the important parts of Seam have been added to the JavaEE system, which provides an end-to-end set of technology specifications. If you choose to run a Java Application Server (such as JBoss EAP, Glassfish or Wild…

Super comment, thanks a ton, I will update the post at some point after this thread has cooled down a bit and I will definitely use your input.

You're welcome ... I'm happy to see someone looking at this question from a pragmatic stand-point. The continuity of libraries and frameworks and the "usefulness" of a language are IMPORTANT but usually these trade-offs are discounted versus "coolness" by those comparing the frameworks. If you're focusing on getting something accomplished, chasing every new and improved library, framework and architectural pattern only does one thing - it keeps you from ever delving deeply enough into one technology stack to truly become an expert. Pragmatism and zealotry don't mix.

I should have also stated in my comment above that I almost gave up on Enterprise Java back in the J2EE 1.4 days (2005-2007 if I recall correctly). When you have to create multiple Java files for every EJB (mostly Entity and Stateless Session beans) and edit XML deployment descriptors (many times one deployment descriptor for each supported application server), Java programming feels as tedious as many people describe.

The contrast with JavaEE 6/7 is amazing - the technologies that are encompassed in each of the specifications tend to follow the same pattern. Write a POJO and add annotations. For instance, if you need a business method that consumes messages from a message queue and processes them, that's one (short) Java file with some annotations. For a more complicated example, if you have a database table and want to expose the records via a RESTful interface, here's what you'd have to write six (small) files as follows:

- One entity bean with fields annotated for the ORM as well as accessors and mutators.

- One stateless session bean with your business methods - in this case providing CRUD operations against the entity bean (using a PersistenceContext from JPA)

- One JAX-RS annotated class to provide the RESTful API's methods (again an annotated POJO).

- One Application class (with very few lines of code - it activates JAX-RS).

- One persistence.xml file to define a datasource.

- One (empty) beans.xml file to activate CDI.

If you stick with the JavaEE annotations and configuration files, there are some real benefits to this structure:

- The ORM's entities and configuration are database agnostic ... the same WAR file could be deployed against your MySQL servers, Oracle (for those who have money to burn) or PostgreSQL.

- The application will run on any JavaEE compliant application server. Deploy the file to Glassfish, Wildfly, JBoss EAP or even WebLogic (for those who have money to burn).

- The ORM will cache entities (and can be configured to use a second-level cache when it's prudent). When you start caching database rows, you have to be careful and there may be tuning involved.

- The Application Server will create pools of each of the objects that will be used so that it's not creating and destroying objects over and over again. This is a huge performance gain for servers with a lot of request-scoped web transactions that use stateless session beans for business logic.

There are also ways to create enterprise Java applications that are a little more light-weight (though today's Application Servers have lost a lot of their girth). If you simply use a servlet container you can still use JSF which has a better templating engine that JSP. You can add CDI by including the library and a little bit of bootstrap code. Application servers like Apache TommEE start with Tomcat and add libraries as needed.

It also occurs to me that the "experimental phase" you're embarking on could be leveraged to be both crowd-sourced and open-source. Since you're starting from scratch with each of these technologies, wouldn't it be interesting to have a complete newbie and an expert produce the same application using each of the surviving frameworks?

If you publish a light-weight specification for your test project and open a Github project with each framework's implementation in a sub-directory, I'd be really curious to see what efficiencies and problems were experienced with each implementation. It would also give you a way of comparing your implementations to others.

Re: Choosing a Web Framework/Language Combo for the Next Decade

#178

Earlier quoted context omitted.

In the long run this should save me time.

Well, that's the classic argument for yak shaving. Most if not all of the frameworks you analyzed will be more than adequate for the app you're going to build. What it should come down to is what you're comfortable with. Focus on the product you want to build, not the tools you are using to build the product.

I think I got the Yak shaving part covered with the first sentence of the post :)

I'm well aware of the ups and downs of exposing myself to choice like this but I really want to get myself exposed to some real world practice with some of the top contenders here to make a more objective choice and I also feel that 'what you're comfortable with' is getting too close to unsupported that I should widen my view.

Fortunately this is not a commercial undertaking, nor am I on a tight deadline so I can afford the luxury of thinking this over. If it were for a customer and it would be required tomorrow morning then the story would be wholly different.

Re: Choosing a Web Framework/Language Combo for the Next Decade

#179
post #14

Dropwizard is where it's at right now for Java frameworks. It's a superproject that glues together the best pieces out there. Surprised it wasn't on the wikipedia list. Which brings up another point: if we're talking about web frameworks for the next decade we should really be looking at service-oriented architectures / single-page apps or whatever you want to call that model. It's quite different from the web framew…

What do you think of Play?

Re: Choosing a Web Framework/Language Combo for the Next Decade

#180
post #77

Earlier quoted context omitted.

The problem with Haskell is its syntax. Too many arbitrary and traditionless things to memorize. It's curious that the Haskell developers try to one-up the rest of the language space in nearly every other space, but choose such a weird and unhelpful syntax. Look at Python: The only reason people started to use it is because of the syntax. Now it's slowly eating Matlab and R in science - two specialized languages beat…

> The problem with Haskell is its syntax. Too many arbitrary and traditionless things to memorize. It's curious that the Haskell developers try to one-up the rest of the language space in nearly every other space, but choose such a weird and unhelpful syntax. I've seen this criticism before, and I don't understand it. The syntax of Haskell is not that big. There are some things a bit funky about it, especially the in…

For me at least, that means exactly what you mention in your other reply below. Even more than weird operators themselves, but the problem for me is that they're hard to vocalize in my mind when reading. In other words, this:

http://stackoverflow.com/questions/7746894/are-there-pronoun...

http://www.haskell.org/haskellwiki/Pronunciation

plus any more potentially introduced by any libs, or whatever else. When I see any Haskell code, I feel that I trip on those every time. And among them, especially confusion between: -> => >= >>

Post reply on HN