Beta

Slashdot: News for Nerds

×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Ask Slashdot: Tips For Designing a Modern Web Application?

timothy posted more than 2 years ago | from the use-a-lot-of-blink-tag dept.

Programming 409

New submitter sdoca writes "I am a Java developer and for the past number of years I have mainly been working on server side code. I have an idea for a webpage/application that I would like to develop. For the general public, it will be a site where they can view upcoming events, filter them by type, date etc. and view details of events they're interested in. There will also be an admin section to the app where organizations who want to post their events can log in and set them up. In the long term, writing a view-only version as an Apple and/or Android app is on the radar, but I want to focus on the generic web app for now. I'm not sure what languages/frameworks to look at using for the webpage portion of my project. Many (many!) years ago, I wrote some applets. After that I did some work in WebObjects and after that I tinkered with Wicket. I have no experience with PHP and would like to stay in my Java comfort zone as much as possible, but want to use the right tool. I'm concerned about browser compatibility issues. Chrome didn't exist when I last did web page development. I'm looking for good resources (books, internet) that will guide me through the potential issues and your recommendations for a web development framework."

cancel ×

409 comments

The thing about Java is (-1, Flamebait)

ElectricSpit (1821746) | more than 2 years ago | (#40197123)

you should stop using it

Re:The thing about Java is (-1)

Anonymous Coward | more than 2 years ago | (#40197151)

And if you don't use Rails, you're a butt-head.

Re:The thing about Java is (-1, Troll)

Anonymous Coward | more than 2 years ago | (#40197201)

Probably, but should stop using java anyway.
"Productivity with Java" is an Oxymoron [wikipedia.org] .

Re:The thing about Java is (1)

Anonymous Coward | more than 2 years ago | (#40197223)

No! Django is newer, so RoR developers are living on borrowed time.

Re:The thing about Java is (-1, Redundant)

Anonymous Coward | more than 2 years ago | (#40197211)

Because it's not a useful tool ever in any situation, wow, thanks for pointing that out Mr. Spit you've made me a better programmer already. I aspire to one day be the great programmer that you obviously are.

Re:The thing about Java is (0, Redundant)

Man On Pink Corner (1089867) | more than 2 years ago | (#40197257)

It's useful if you want to sue people for stealing your patented copyrighted proprietary implementation of "if / elseif / else."

Beyond that, well....

Re:The thing about Java is (0)

ElectricSpit (1821746) | more than 2 years ago | (#40197263)

I have never enjoyed anything I have ever used with Java, the only way I can stand it now is because I bought a brand new gaming computer which doesn't crash when I run the JVM.

Re:The thing about Java is (3, Insightful)

Anonymous Coward | more than 2 years ago | (#40197355)

You're talking about desktop GUI development - the submitter is asking about Java for web development. That's quite different. How many GUI apps do you use regularly that are written in Python, Ruby, or even Tcl/Tk?

Most important (0, Flamebait)

Skal Tura (595728) | more than 2 years ago | (#40197135)

FORGET java, forget everything you know about JAVA development.
Go with PHP, and CodeIgniter or similar framework which does not force you to their patterns (ZFW used to be like this...)

and keep it simple - keep everything as simple as possible.

And "PHP Templating" is *NOT* templating, it is spaghetti some ate yesterday and came up today.

Re:Most important (0)

Anonymous Coward | more than 2 years ago | (#40197247)

Agreed.

I recommend Synfony2. Fabien Potencier wrote a great series of articles on building your own framework on top of Symfony components which is awesome for someone who knows programming but has no experience with PHP.
http://fabien.potencier.org/article/50/create-your-own-framework-on-top-of-the-symfony2-components-part-1

Many would argue that PHP is not even an actual language as Java is a complete one. But that's not what the web is all about. You cannot build a 'modern' webapp using java anyways. While PHP should be the obvious choice, Ruby and Python are also worth considering.

Re:Most important (5, Insightful)

countach74 (2484150) | more than 2 years ago | (#40197529)

What do you mean you cannot build a 'modern' webapp using Java? It's done all the time. If memory serves, Gmail is in Java. I also disagree with PHP being the obvious choice. It's a lot like JavaScript: it's everywhere, so people use it. It doesn't change the fact that it's a piece of rubbish. Ruby and Python are much better suited towards modern web development. PHP is glorified template system that is extremely inconsistent and overall ass backwards. The whole notion of mapping a URI to a file is so 1990's.

Re:Most important (-1)

Kalriath (849904) | more than 2 years ago | (#40197649)

There's no way Gmail is Java. Google is a PHP and Python shop.

Even more important (4, Insightful)

Anonymous Coward | more than 2 years ago | (#40197253)

Forget PHP. The language has seen very little progress lately. But even that wouldn't matter, as PHP is slow and horrible. Very inconsistent as well, as the it's little more than glue between some libraries.

Re:Even more important (2, Funny)

Anonymous Coward | more than 2 years ago | (#40197335)

Ghaaa! GHAAA!! I eat your face for saying "forget PHP".

PHP is superior.. I say this because you can do damn near anything in PHP. I can generate dynamic SVG in PHP, I can post dynamic encrypted AJAX-script in PHP, I can communicate with my server's serical port in PHP, I eat your face in PHP!!!

Nothing you can do in any language is superior to any other except for SIMPLICITY! The more human-readable the code is, the more PHP ZOMBIES EAT YOUR FACE OFF!!!

Re:Even more important (-1)

Anonymous Coward | more than 2 years ago | (#40197353)

PHP is gay, yo.

Re:Even more important (2)

Kergan (780543) | more than 2 years ago | (#40197457)

Yeah, you can do a lot of weird things, too.

$a = array('7.1');
var_dump(in_array('7.10', $a)); // true

http://www.phpwtf.org/ [phpwtf.org]

Re:Even more important (0)

Anonymous Coward | more than 2 years ago | (#40197503)

PHP is superior..

Bullshit. ASP.NET is.

Re:Even more important (0)

Anonymous Coward | more than 2 years ago | (#40197615)

I think the fact that it is named after a venomous snake probably ought to be a clue about something there. I'm not quite sure what though.

Re:Even more important (1)

Kalriath (849904) | more than 2 years ago | (#40197655)

Go tell that to Python.

Re:Even more important (2)

rev0lt (1950662) | more than 2 years ago | (#40197535)

The notion of "human readable" varies from human to human. I have a friend that *loves* haskell, but for me the code looks like a corrupted text file. On the other hand, I've identified and corrected errors in programs made with high-level languages from an assembly dump of the code. What I find simple and easy to read may not be that easy to you, or vice-versa.
Oh and I do work with PHP, and I hate the ambiguity of the code.

Re:Most important (1, Flamebait)

Cyberax (705495) | more than 2 years ago | (#40197341)

Yep, that'd be great advice. After we shoot all living PHP developers and go back in time to change PHP to be something decent.

ANYTHING is better than PHP. Anything. Even CGI scripts in Perl.

And Java is fine for web development. In particular, Wicket + JRebel + IDEA can allow one to write code waaaay faster than stupid PHP coders.

Also, I might recommend Scala and Typesafe stack: http://typesafe.com/stack [typesafe.com] - it's quite nice and powerful.

Re:Most important (2)

aztracker1 (702135) | more than 2 years ago | (#40197453)

Honestly, not such a fan of either Java or PHP... I'd probably suggest Python/Django, NodeJS/Express or ASP.Net MVC as more modern frameworks that are faster to get up and running with.

Use a Framework! (1)

Anonymous Coward | more than 2 years ago | (#40197139)

It will save you a ton of time. Some people here would argue that you should build from scratch, but ignore them.

There are a lot of good frameworks out there. Here is a list: http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks

Re:Use a Framework! (5, Insightful)

AuMatar (183847) | more than 2 years ago | (#40197437)

Frameworks are good only if all of the following are true:

1)You want to do exactly what the framework was set up to do. (in other words, everything about your app is cookie cutter)
2)You aren't a very good programmer
3)You already know the framework
4)You don't want to do something wild and crazy, like write an sql query (the framework way tends to use 3 objects which define interfaces and require you to jump through hoops, all so it will automatically grab the data and unbox it for you in the format it assumes you want it in, rather than the format you actually want it in).
5)You absolutely don't want to use any advanced database functionality whatsoever, since most frameworks these days assume that they can create and alter tables at will.

If those first two things aren't true, you're going to spend an order of magnitude more time working around the framework's limitations than you will save by using it. If 2 and 3 aren't true, you'll spend more time learning how to use the framework than you'd save by using it.

Frameworks are good for getting low to moderately skilled developers to pump out cookie cutter type apps quickly (so long as those apps don't need to worry about little things like scale and performance). They're absolutely horrible if you want to do anything novel, you need performance, or you actually know sql and just want to write a simple god damn query.

Re:Use a Framework! (3, Informative)

ZombieBraintrust (1685608) | more than 2 years ago | (#40197593)

Given the description of what he wants to do I would encourage him to use a framework. Web Frameworks are setup to do what he described.

There's quite a few options out there, but... (4, Insightful)

pushing-robot (1037830) | more than 2 years ago | (#40197145)

If you're familiar with Java but not web development, it sounds like Grails [wikipedia.org] might be a good place to start.

Re:There's quite a few options out there, but... (4, Informative)

jasenj1 (575309) | more than 2 years ago | (#40197591)

I'll throw in a vote for Grails. It is a convention over configuration app framework that has you code your domain objects and then it generates CRUD pages for you.

The documentation is pretty good. There's lots of tags for the web page side.

It lives on top of Spring, Hibernate, & JQuery so it has some solid frameworks at its core.

It uses Groovy as its language rather than Java, but Groovy is 100% compatible with Java and is mostly syntactic shortcuts & convenience tricks on top of Java (like no need for semicolons). So it is very easy to learn if you're a Java guy; you can slowly start using more idiomatic Groovy while still writing very Java-esque code.

If Groovy scares you, try Roo (http://www.springsource.org/spring-roo). It's a pure Java based app framework also from Spring that uses the Spring libraries.

Now, having said all that. If you plan to deploy to iOS or Android, you may want to consider RhoMobile (http://rhomobile.com). It is a Ruby-on-Rails environment that runs on top of the native OS. So developing a RoR app for the client-server PC side and then porting to RhoMobile should be very easy. I don't know of a solution on the Java side that will take a Java servlet based app and move it over to the mobile OSes conveniently.

Re:There's quite a few options out there, but... (4, Informative)

c0lo (1497653) | more than 2 years ago | (#40197599)

If you're familiar with Java but not web development,...

+

In the long term, writing a view-only version as an Apple and/or Android app is on the radar

+

I have no experience with PHP and would like to stay in my Java comfort zone as much as possible, but want to use the right tool.

In my opinion, give GWT [google.com] a try. Why should make it exciting for you: the entirely dev cycle (this includes debug) is Java based - including the code in the "views" that will be shown in the browser (even if this code will be transpiled [wikipedia.org] to javascript - a very compact one for the functionality it implements).

Using GWT, the "presentation logic" is totally separated by the lower layers (in both "architectural" and "exploitation" senses): i.e. your business logic will implement only "services" type of functions, the "presentation logic" - in browser - will be in charge to render the data the way you see fit - no more server-side resources to be consumed by layouting the page, applying "data model basic consistency validation", etc - (oh, how I hated JSP at their time). Let the "client CPU" do a bit of this effort - if your application will be highly used, a bit from every client-side that takes some care about itself will get you some serious server-side savings.

As I write, I'm digging into a piece of GWT [google.com] that promises to take care of the integration with JPA entities, e.g. bringing Hibernate into the picture without the need of heaps of "plumbing code".

Coldfusion (1)

Anonymous Coward | more than 2 years ago | (#40197153)

Okay, okay, stop laughing. Take a look at Railo. It's open source, cold fusion, and runs on Java.

Re:Coldfusion (2)

QuebecNerd (924754) | more than 2 years ago | (#40197627)

I agree with you and I frequently use Railo on AWS/EC2 images. I really don't know why people are so judgmental on ColdFusion. Many of them never tried it. It's fast, mature, easy to deploy and plays well with others (java, .net, etc). I first used ColdFusion in 1995. I was bundled FREE with Oreilly 'website pro' web server software back in the days when they were making software.

Re:Coldfusion (1)

Kalriath (849904) | more than 2 years ago | (#40197667)

I think people are judgemental because it's Adobe. I'm surprised it doesn't bug every third web site visitor to call the sys-admin and ask them to run Adobe Update, and have 4 security vulns a day.

Lasso (0)

Anonymous Coward | more than 2 years ago | (#40197177)

You might check out Lassosoft.com. I believe you can customize it with Java and overall, Lasso is a fairly complete tool set for building web applications.

Would anyone else recommend GWT? (3, Interesting)

WilliamBaughman (1312511) | more than 2 years ago | (#40197183)

It's been a long time since I've used the Google Widget Toolkit [google.com] , but it was an interesting shim between Java and WebApps. Would someone with more recent experience than mine please chime in and say whether it would be useful to the original poster?

Re:Would anyone else recommend GWT? (3, Informative)

schlesinm (934723) | more than 2 years ago | (#40197287)

GWT is decent if you are building a web application that will be doing one thing. If you are looking for a more broadscale application, then GWT doesn't hold up well.

Re:Would anyone else recommend GWT? (1)

SplashMyBandit (1543257) | more than 2 years ago | (#40197661)

That's a fairly broad statement, "GWT doesn't hold up well". I'm curious to see why you think this is the case - my (extensive) experience has been the opposite - GWT scales well and you can do stuff with it that is painful with other technologies (eg. works across just about every browser - even with braindead IE6's limitations; you can also development very modular and re-usable components with GWT). So yeah, I'm interested to hear what general-purpose solution you think is better than GWT and why.

Re:Would anyone else recommend GWT? (5, Interesting)

Post-O-Matron (1273882) | more than 2 years ago | (#40197331)

GWT is good if you want to create a RIA [wikipedia.org] , when the presentation logic is so complex developing it in javascript is a nightmare, but without having to use Flash or silverlight. If the presentation is simple enough however, I would stick to HTML5 + jQuery. In fact the "simple enough" bar in that last statement is gradually pushed forward.

As a rule of thumb I'd say if you have a lot of moving parts on the page and you are basically creating a desktop application inside the browser ala Google docs, then consider GWT. Otherwise it will do more harm than good.

Re:Would anyone else recommend GWT? (1)

SplashMyBandit (1543257) | more than 2 years ago | (#40197665)

JQuery, no thanks. GWT does a much better job of insulating you from browser craziness IMHO.

Re:Would anyone else recommend GWT? (4, Insightful)

SplashMyBandit (1543257) | more than 2 years ago | (#40197647)

GWT is great if you want interactivity. Also fits in well since you are a Java programmer. I've also recently discovered vaadin (http://vaadin.com) which extends GWT and provides much nicer themes than the default. Best of all, all the tools you need for GWT/vaadin development are free (both zero cost and source is available); Java, Tomcat, Eclipse or Netbeans, GWT + GWT plugin (for debugging in your browser), vaadin and the all-important community documentation/forums (that is, you don't have to pay for a subscription like MSDN). Best of all vaadin/GWT handles almost all of the browser variation for you (although there are differences in CSS for advanced styling).

Since you are already a Java programmer I would say you'd be mad to go past GWT (which you also develop for, and can debug in Java). Other solutions are ok for static page-oriented viewing but for a complex dynamic site it is hard for a competent Java programmer to be more productive than with GWT (except for the smaller sites with not a lot going on). How do I know, well I use GWT daily - including building complex sites for managing medical information for our national-level health ministry.

Java? Nigga is u serious? (-1)

Anonymous Coward | more than 2 years ago | (#40197189)

Java's wack, son.

There's two parts (2, Informative)

sribe (304414) | more than 2 years ago | (#40197213)

For the client side, you want to use at least JQuery (& SASS & CoffeeScript), and learn about non-intrusive scripting. You may also want to investigate other libraries that layer on top of JQuery.

For the server side, the choice is less clear. I happen to like Rails--it was the first web app framework that felt even remotely "right" to me, but since then there's been a lot of development and a lot of cross-pollination of good ideas across languages/frameworks, such that there's now a number of choices that rate as "pretty damn good" in my opinion.

Re:There's two parts (2)

ohnocitizen (1951674) | more than 2 years ago | (#40197481)

Coffeescript: When you want to debug in two languages. Seriously though, it ended up being a bit of a practical bother. If on the otherhand you try coffee and love it, you can use it with nodejs.

Re:There's two parts (1)

aztracker1 (702135) | more than 2 years ago | (#40197483)

I'd say CSS is equally as important... would look at Twitter Bootstrap as a base UI set..

Re:There's two parts (1)

pipeep (2106308) | more than 2 years ago | (#40197619)

Notably, Bootstrap uses LessCSS heavily, which is similar to SCSS. I'd suggest the OP look into both SCSS and LessCSS if he's/she's looking for a CSS preprocessor.

Re:There's two parts (4, Insightful)

Kergan (780543) | more than 2 years ago | (#40197553)

CoffeeScript... That way, when your console tells you you've a JS error on line X, you need to check the code output by CS, and locate whatever code you wrote that could have generated the relevant lines, all the while coping with the fact that CS doesn't cover 100% of JS, and introduces its own set of bugs and quirks on top of those in JS. Good luck with that in the long term.

Re:There's two parts (1)

SplashMyBandit (1543257) | more than 2 years ago | (#40197673)

Rails is pretty good if all you do is web->DB form stuff. Once you start integrating with devices and complex webservices then Rails is not as good a fit as something like Java.

Ignore PHP (3, Insightful)

Osgeld (1900440) | more than 2 years ago | (#40197231)

its the worst thing you could ever attempt to learn

Re:Ignore PHP (0)

longk (2637033) | more than 2 years ago | (#40197325)

Because what? Because it seems to work so well for Facebook?

Re:Ignore PHP (1)

Anonymous Coward | more than 2 years ago | (#40197505)

facebook does seem to use php. But its just one of its components. "Facebook’s backend services are written in a variety of different programming languages including C++, Java, Python, and Erlang" So I would assume facebook is a NOT typical example of an regular php site.

source: http://www.makeuseof.com/tag/facebook-work-nuts-bolts-technology-explained/

Re:Ignore PHP (0)

Anonymous Coward | more than 2 years ago | (#40197343)

It's also ubiquitous and well developed. I agree that it's never going to satisfy anybody's programming aesthetic and it is heretical to object oriented approaches. That said, it is legion, there is more support for it than ruby or [insert latest fad programming language used mostly by 20-somethings because it's cool].

Given the way things are going, you might do the whole thing in HTML5 and Javascript. Neither will disappear anytime soon. Any reason not to?

Re:Ignore PHP (0)

Anonymous Coward | more than 2 years ago | (#40197687)

> well developed

LOL

http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/

Press page down a few times to get to the good parts.

Consider PHP (0)

JoeCommodore (567479) | more than 2 years ago | (#40197623)

Because it is so easy to get started with it and actually get something working relatively quickly, do consider PHP, it has a quick learning curve and really does provides ample flexibility and power.

But with that, keep in mind with the simplicity there are are sometimes no sanity checks - so read up on the tips to secure your PHP code (its not hard - just things you need to be aware of - and also its probably a good way to understand how web apps work and can be vulnerable (with any language).

PHP Frameworks (Zend, Cake, Smarty, etc) can help a lot if you don't want to get that deep into all of it.

codeigniter + datamapper (0)

Anonymous Coward | more than 2 years ago | (#40197233)

bro, if you are an adequate java developer, i promise you you can learn php fast. I wouldn't hesitate too much with telling you to just dive in full-on with a php solution. the php manual is really quite good and loaded with examples, plus if you are starting with a framework as you definitely should be, there are higher-level examples and even full walkthrough tutorials that make it incredibly easy.
i suggest you use codeigniter with the datamapper package: http://datamapper.wanwizard.eu/
I have developed my share of java as well, and i think it would be much easier coming to php framework development than for someone who has only known php to go to java. I think a good programmer of any lanuage with no php exposure should be able to run with these suggested packages and their manuals.
You may likely run into some speedbumps with development environment and server config issues, but nothing a sysadmin friend cant set you straight on in the beginning.
my experience: cis degree, 8 years pro web developer experience, +freelance years before that

Play framework (Java) (5, Informative)

Anonymous Coward | more than 2 years ago | (#40197245)

I just started playing around with the Play framework (Java/Scala) I'm loving it, and I'm coming from *gasp WebObjects, and .Net. I can't speak too much about its features but it's really simple to get up and running connected to a database and serving content, as well as creating REST api. Deployment is a single command.
This is what I'm using for a tutorial: https://github.com/jamesward/play2torial/blob/master/JAVA.md

Re:Play framework (Java) (2)

davidoff404 (764733) | more than 2 years ago | (#40197471)

+1

Play is excellent. I initially picked it up as a way of learning Scala and loved it from the start.

Re:Play framework (Java) (1)

terjeber (856226) | more than 2 years ago | (#40197511)

+1 for Play. It makes Java almost as much fun as Ruby and Rails. Stick with Java for a while and when you are comfortable about moving out of your comfort zone, you move onto Scala. You will never look back. The people recommending PHP are nuts. Don't listen to them. You'd be better off with Visual Basic.NET (which is terrible).

Re:Play framework (Java) (1)

SpazmodeusG (1334705) | more than 2 years ago | (#40197569)

This really is what you want exactly. A lot of development frameworks have a code->redeploy->view cycle for every change. Play on the other hand dynamically compiles everything when in development mode so it's just code->refresh. It also lays everything out in nice MVC pattern so you're really just filling in the blanks as you code.

CherryPy (3, Interesting)

elamdaly (590256) | more than 2 years ago | (#40197259)

I'm long time Java developer myself and I find Python to be a natural transition. We've been using CherryPy [cherrypy.org] at work and it's a pleasure to use. Clean, concise and simple. And it has a number of templating [cherrypy.org] languages to use as well.

@WilliamBaughman GWT is nice, but it's different than most web frameworks. It's Java code compiled into Javascript. The times I've used it I've come away thinking it has some great features, but it's a little heavy for my taste. Haven't used it in about 3 years though.

Re:CherryPy (1)

countach74 (2484150) | more than 2 years ago | (#40197575)

+1 ... I'm not sure why CherryPy hasn't gained momentum. It is such a fantastic tool.. and because it's an HTTP framework and not a "web framework," it is both easy to learn and does not lock you into what the web framework is designed to do (cough, Django). It's seriously taken the "work" out of web programming, in my mind... well, except for JavaScript being awful.

here is the most important tip... (1, Informative)

Lumpy (12016) | more than 2 years ago | (#40197261)

If it does not load perfectly every time, you failed.

for example? Any of the Gawker Media websites, some times you have to reload t hem 3 times to get the fricking hyperlinks to work.

any usability bug is an epic fail.

CMS and done. (3, Informative)

adosch (1397357) | more than 2 years ago | (#40197269)

Just use a CMS and call it good. I remember the days before very customizable templating where you hand-roled all that web site crap yourself. There are plenty of CMSs out there (TomatoCMS, Wordpress, Joomla, LightCMS, ezPublish, etc) that will do exactly what you want in about 20 minutes of your time. There's also lots of customizing and add-on's you can get for the more popular CMS's that I mentioned, too. And to keep to your Java roots, you can do all the client side stuff you want in JQuery or equivalent.

That's my $0.02.

Re:CMS and done. (4, Funny)

Lehk228 (705449) | more than 2 years ago | (#40197421)

QDB.us #307623 wordpress is an unauthenticated remote shell that, as a useful side feature, also contains a blog

Re:CMS and done. (1)

victorhooi (830021) | more than 2 years ago | (#40197441)

heya,

Sorry, this is just a niggle, but Java != Javascript!

Argh, I don't know where this meme came about, but the only thing similar between them is the "Java" part - and that was just Sun/Netscape trying to cash in on the Java hype back then.

Syntactically, sure, you can argue they're similar (and even then, only a a very basic level) - but then so are all the C-class languages.

If he really wanted to stick to his Java roots on the UI side, he could use something like GWT (Google Web Toolkit).

Cheers,
Victor

Here's some advice regarding Java (0)

Anonymous Coward | more than 2 years ago | (#40197291)

Don't use it for the web. Period. You will force a really undesirable and clunky dependancy on people which will most likely scare away loads and loads of users from the application. Go learn Javascript if you must have something that isn't just HTML on the client side. If you want to stick with Java for the server side of things, fine, but don't throw Java in the face of the users.

Nothing wrong with PHP. Don't be a language bigot (1)

Anonymous Coward | more than 2 years ago | (#40197301)

staying in your "Java comfort zone" is just silly. PHP, ASP, JSP ... all follow a similar construct. It's called "application for web in language ___".

Honestly, if you've already learned Java you've got 90% of the knowledge you need for PHP. All you need to know is . = + and variables are prefixed with $. The function names are different, but so what? they're much simpler than this.that.something.else.ghaaa

Java is not server-centric the way PHP is server-centric. You're basically saying "I want to learn how to drive, but only ONE model/make of car".

Learn PHP, it's worth it. Your soft, sensitive, tender Java belly will be just fine.

Re:Nothing wrong with PHP. Don't be a language big (3, Insightful)

cowdung (702933) | more than 2 years ago | (#40197365)

PHP is garbage. Bad design all over the place. And I'm talking both about the language as well as the standard mess it calls a "library". It is the new BASIC.. stay away it'll damage your brain. For details see:

http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/ [veekun.com]

There are better alternatives if you want to go the dynamic route: Ruby on Rails and I hear Python / Django is great too.

There's nothing wrong with Java as long as you know how to use it. But its always good to learn a new language. ASP.Net is also nice if you don't want to go dynamic.

The hardest part about moving away from Java is losing all the cool static analysis tools that are incorporated in Eclipse as well as tools such as FindBugs. But our experience with RoR (in spite of it missing some needed feature many Java frameworks have).

In summary: learn anything but PHP.. it truly is garbage that must die.

Re:Nothing wrong with PHP. Don't be a language big (1)

Stephenmg (265369) | more than 2 years ago | (#40197499)

I completely agree and don't understand the hate that php gets. PHP is a language for web dethronement. You should be fine going from Java to PHP due to PHP being mostly based on Java. I would have modded the parent up, but didn't see the point since it was posted as AC, so decided to post in support instead.

Re:Nothing wrong with PHP. Don't be a language big (0)

Anonymous Coward | more than 2 years ago | (#40197589)

PHP is neutered Perl, and Perl is bad enough (this is coming from someone who was recently working on a large Perl project for several years). PHP has all the messy syntax of Perl (it was originally based on it), but none of the more powerfull metaprogramming features (that exist in cleaner languages like Python and Ruby). Years and years ago it had the one benefit of being embedded in HTML by default, but now every other scripting language has a library that lets you do the same thing. The only possible reason to use PHP is that you want to make use of some web library or CMS that was already written in it, which I hate to admit is actually a pretty compelling reason. The wordpress hacks I've seen are impressive. But doing anything from scratch in PHP is just shooting yourself in the foot.

Re:Nothing wrong with PHP. Don't be a language big (3, Insightful)

Fnord (1756) | more than 2 years ago | (#40197597)

Parent was me, forgot to log in

Java Server Side (1)

physburn (1095481) | more than 2 years ago | (#40197307)

Java for the web, you mean you don't already know, JSP? You could just write java server pages, or add in the java standard templete library. Its not difficult, but might not be MVC enough for large scale development, So add Apache Wicket or Spring MVC or possibly playframework.

Re:Java Server Side (1)

ancientt (569920) | more than 2 years ago | (#40197671)

Do what you do best.

Use Java for the server coding and Dart for the client coding. JSP is an obvious choice if you haven't already considered it. Dart is going to feel very familiar but compiles to JavaScript so you can build in an enviornment you are already comfortable in and still avoid the pitfalls of client side Java.

Personally, I'd like to see you do your project to also work as a plug-in for Vosao. While I am not a fan of Java, it's still what I'm using for my CMS on Google AppEngine because it's good at what I care about. That's kind of key to the advice I'm giving you. Of all the programming languages I've used, and there are several, I'm least fond of Java but what matters is the quality of the result. You'll do your best work if you spend your time on the project instead of on learning new tools.

Spring, Scala/Akka/Play (3, Interesting)

MattW (97290) | more than 2 years ago | (#40197317)

I have two suggestions that are close to staying with Java:

(1) Check out Spring (http://www.springsource.org/); Spring has a bunch of goodies that make developing web apps easier, and the guys from spring (Adrian Colyer, Richard MacDougall) are thinking really hard about scalable web services. This is a foundation that will let you write in Java but still be prepared for the future.

(2) Even better, don't go with Java, but leverage some of what you learned and pick up Scala. See http://www.scala-lang.org/ [scala-lang.org] , or pick up Martin Odersky's book. Think of Scala as what Java would be if someone who appreciated terse, expressive syntax and great convention redesigned Java. Odersky wrote a reference JVM implementation while at Sun, and Scala compiles into Java bytecode and can directly use Scala libraries. (My first Scala project, for example, I used unboundid's LDAP libs directly in my Scala code.) Odersky along with some other luminaries (Viktor Klang, Paul Phillips, etc) have formed Typesafe, and are producing Scala the language + Akka (an actor framework) + Play (a web framework). Outside of play, many people are huge fans of Lift, and it does have some magic that no other framework has.

Remember how you said "modern" web application? Well, Scala supports functional programming, and you can fix functional and imperative code in the same application, which means you can support massively scalable sites by writing clean, idempotent code where needed.

If all this sounds bad, then I'd recommend Django+Python, as it is, imo, the best way for a relative web novice to produce decent code, and the amount you can do with a few hours reading docs and then digging in is shocking.

check what's available (2)

rev0lt (1950662) | more than 2 years ago | (#40197323)

What you describe sounds a lot like many different existing applications. You may benefit from checking out what is already out there (opensource) and see if it is a good fit (or a good starting point) instead of building your own. Also, you may get some new ideas for your own design, so you won't waste your time.

Regarding programming languages, your decision may be conditioned to the deployment options. Do you want to run it on your own infrastructure, or do you want to put it on a shared host/cloud provider? For shared hosts, PHP or Python may be a good option.

Other aspect to consider is the widget toolkit. Do you have experience with one (or several) that may be more suited to a given language? As an example, GWT is Java-oriented, Dojo integrates well with Zend Framework (PHP), and (AFAIK) both ExtJS and DHTMLX are more language-agnostic. I actually use a lot DHTMLX and their scheduler component may be a good fit for what you're trying to do. Also, (at least) both DHTMLX and ExtJS have a design tool, so you can build your interface without the need for programming or any server-side code.

Finally, do you have other specific requirements, such as scalability, SGBD to use, multi-language support, big persistent data, complex objects, etc? That may also influence the choice of both the language and the framework. Remember, PHP applications are (mostly) stateless, and at every request your application starts from scratch. You can use cache and other tricks, but it will take you only so far - and if you are used to Java, you may take some time to adapt to these limitations.

My personal choice would be PHP with Zend Framework (v1.x), but I don't really like Java and don't have that much experience with other fancy web-oriented languages. Zend Framework is quite complete and probably will give you all the funcionality you may need for your application.

Re:check what's available (1)

Anonymous Coward | more than 2 years ago | (#40197489)

I'd stay away from PHP. It sounds like a language by and for hacks:

http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/

Face-eating PHP monster again... (0)

Anonymous Coward | more than 2 years ago | (#40197367)

Every server-side language has it's problems, but PHP is so face-eatingly wonderful for the web you're just a silly victim for not using it.

Simplicity... eat the web with PHP.

Need some client side? (4, Informative)

rHBa (976986) | more than 2 years ago | (#40197379)

To be honest you're gong to have to know some HTML/CSS at some point. It's considered impolite these days to insist (or expect) that the client side understands Java.

In other words, assume that Java ISN'T supported on the clientside.

Re:Need some client side? (1)

rHBa (976986) | more than 2 years ago | (#40197443)

Sorry to reply to my own post but the OP seems (to me) to be thinking along the lines of Java Applets?!?

Re:Need some client side? (0)

Anonymous Coward | more than 2 years ago | (#40197493)

I agree. After moving into web dvlp after years building C toolkits, I certainly made use of toolkits / CMS such as Wordpress, and until I sat Dow and learned HTML / CSS to the last detail, I was always frustrated by what I didn't know.

KISS (1)

k(wi)r(kipedia) (2648849) | more than 2 years ago | (#40197387)

... if it's design you're after. Or is programming you want to ask about? The title of you submission mentions "design", but your extended explanation focuses on the programming rather than the design aspect. Maybe you should clarify. I'm not at all familiar with web programming. But my biases are against apps that have too many funny looking icons, menu items, and buttons.

Play or Vaadin (0)

Anonymous Coward | more than 2 years ago | (#40197393)

I'd probably either use Play or Vaadin. (And I'd probably lean towards using Scala with either of those.)

Thought about sticking to a mobile app? (2)

Kergan (780543) | more than 2 years ago | (#40197397)

Depending your project's specifics, consider whether you actually need the web application. If it turns out that you don't, go straight for an Android app (since you know Java). After it's released, toss in a "dumb" (aka no admin area) web site -- it should amount to a couple of new (outsourced) views for whichever framework you picked to create your json or XML API.

I suggest this because writing complicated/interactive web views is a true mess for the uninitiated. The devil is in the plethora of browser-specific quirks, and you probably want to avoid running into them if you can get away with it.

If you really must, that said, there are lots of MVC frameworks for web development, including several in Java. Each language has its more popular ones; picking yours is, imho, mostly a matter of taste...

http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks [wikipedia.org]

For javascript, don't miss jQuery and qUnit.

ExtJS (0)

Anonymous Coward | more than 2 years ago | (#40197445)

ExtJS!!

It has a mobile framework called touch too. You connect to a database using CRUD or the Ext.Direct API (which has PHP and Java libraries available). My favorite framework at the moment.

Note that it's GPLv3 however...so if you're not paying for a license, your code must also be GPLv3 compatible.

Check out some of the demos:
http://dev.sencha.com/deploy/ext-4.0.0/examples/ [sencha.com]

Here's the mobile touch demos:
http://dev.sencha.com/deploy/touch/examples/production/index.html [sencha.com]

What kind of Interactivity? (0)

Anonymous Coward | more than 2 years ago | (#40197447)

Determine what you really wnat you application to look like.

Do you want something simple (perhaps "old fashioned") that follows the typical conventions of the web? Or do you want a richly interactive application -- something more on par with what you would expect in a desktop application (for example, Google Docs). That choice will largely define what makes the most sense to use.

Simpler applications can be quickly and easily built in frameworks like Grails or JRuby on Rails -- hell even modern iterations of Struts2 or Spring MVC are reasonable (though not optimal) solutions for that. These frameworks have relatively highly refined processes for generating dynamic content on the server side (JSPs) with bits of JavaScript sprinkled in here and there. In the case of Grails and JRuby on Rails, you're talking frameworks that can generate functional web apps (GUI, controllers and even persistence/db layers) with very, very little custom code.

More richly interactive applications can still be /plumbed/ with those same technologies if you want, but for that richness you're really looking for a client side asynchronous Javascript framework like DOJO or JQuery, Google GWT, etc. that will be a much more appropriate toolset to use instead of the more traditional approach. This is "web 2.0+" work where more and more of the application is being built and maintained entirely in Javascript/the clientside instead of being generated with server side code (JSP/ASP/PHP/etc.). In the case of Dojo or JQuery, you'd still want some sort of backend framework (Struts2/Grails/whatever) but typically those backends are fundamentally different because instead of generating HTML they are retasked instead to provide data services for a front end.

Either approach is still valid and has its place -- probably for a long time to come, but the second approach is certainly more "modern" and more capable in terms of generating rich interactivity. It's also much more likely to enable and easy pairing with an Andoid and/or iOS component as you'll be using a similar application architecture and development process in both components -- though Android's dev process is far, far more refined (having borrowed heavily from Adobe Flex) than anything in the HTML/Javascript world.

Keep It Simple, Stupid (2)

TheDarkMaster (1292526) | more than 2 years ago | (#40197465)

Keep simple. I are suspect to suggest something, but I think the combo pure Java (no fancy frameworks) + Apache Tomcat + JSP is flexible enought to many web projects. You can use simple JSP, HTML with some JSP "tags", or the entire page created with a Java Class if you wish, and you can do more complex things when you need

Python :) (1)

countach74 (2484150) | more than 2 years ago | (#40197501)

Python with CherryPy and Jinja2 is my preferred backend system. All of these tools can be picked up in trivial amounts of time and allow for excellent organization and maintainability of code. I'd strongly suggest staying away from PHP.

Re:Python :) (0)

Anonymous Coward | more than 2 years ago | (#40197549)

Any language which has important invisible characters and how your code looks is integral to its operation is something I tend to avoid =P

I kid.

Mostly.

Java programmer here (1)

the eric conspiracy (20178) | more than 2 years ago | (#40197513)

Really like static compile time type checking which means a lot of client side programming pisses me off.

I really like Apache Click. For someone who is really happy working in Java it's a good tool.

Re:Java programmer here (2)

SplashMyBandit (1543257) | more than 2 years ago | (#40197685)

GWT is pretty good (as a Java solution). Yeah, once your project (more than a single person for an extended development period) gets big then static compile time checking can save you from a lot of trouble.

Re:Java programmer here (0)

Anonymous Coward | more than 2 years ago | (#40197689)

Really like static compile time type checking which means a lot of client side programming pisses me off.

What? Are you being appreciative or sarcastic about compile time type checking?

Typos in posts are OK as long as people can understand what you meant.

Look at Spring Roo. (1)

neiras (723124) | more than 2 years ago | (#40197517)

Specifically, look into the Spring Framework and Spring Roo.

Here's where you start: http://www.springsource.org/get-started [springsource.org]

Spring Roo is a shell that does code generation and scaffolding for Java web applications. You're basically 5 minutes from a basic CRUD app with a couple of entities (the typical Rails hello-world-I-made-a-blog stuff). It puts together a really nice stack based on Spring MVC, Maven, JPA and your choice of ORM and view technology. It makes heavy use of AspectJ to keep its boilerplate out of your actual code, so if you decide to stop using Roo in the future, you can - there's no hard dependency on it, it just generates code.. If you decide to do something fancy like use GWT for your UI, Roo can help with that as well.

Quick Roo demo: http://youtu.be/K78vL72XDqw [youtu.be]

Spring is a *huge* set of frameworks based around an excellent IoC container. Roo makes getting started simple, and lets you see how everything is supposed to fit together, which is usually the hardest part in the Java world. Just keep in mind that Spring is not web-focused - it has modules for web stuff, MVC, templating, etc., but also a ton of other stuff you probably don't need.

Recommend you grab the Spring Tool Suite from http://www.springsource.org/springsource-tool-suite-download [springsource.org] (no need to reg, just agree to terms). It's just Eclipse done up nicely with all the extensions you'll need, Roo, and Maven all ready to go. Don't waste time trying to set up vanilla Eclipse.

One more thing: Ignore all the Java hate. All the PHP/Ruby/Python hobbyists are missing out on the joys of proper typing and top-notch tooling. Duck typing doesn't just *sound* dumb.

Good luck.

Re:Look at Spring Roo. (1)

claytongulick (725397) | more than 2 years ago | (#40197617)

It's not that we're missing out. It's that some of us have put up with statically typed languages for 15 years, and have had enough of that crap.

If you don't like dynamic languages, fine, but implying that folks who choose to embrace FP and dynamic languages are "hobbyists" serves no purpose other than to expose your lack of depth as a developer.

Read this [martinfowler.com] and take a long hard look at yourself.

RoR / Python on Heroku (3, Informative)

AncientPC (951874) | more than 2 years ago | (#40197533)

For reference, I come from a LAMP + CodeIgniter background. I've done some Java stuff for university and at IBM, but nothing on the web side.

If you're coming from a Java background, I'd suggest a Python + Django (heavier framework) / Flask (lighter framework), or Ruby on Rails on top of Heroku. PHP is cheap for hosting, expensive for developing. What's more important to you?

You can Google the differences between Python / Ruby. They're roughly the same, with Python requiring you to be more explicit while Ruby tends to do a little more "magic". Also, whitespace code blocks is a deal breaker for some people. I like Python more.

Heroku is free for a single web worker and a small shared database. They're built on top of AWS and charge a premium for the convenience of abstracting away dev ops. It's cheaper to use AWS directly or using a VPS, but at a time cost. How much time do you really want to spend doing dev ops rather than working on your core product?

I would worry about the web app first, then expose an API for use with mobile apps when it comes to it.

Web app development is drastically different from enterprise code. It's about constant iteration and deployment, scaling if necessary. Breaking out of your Java comfort zone will also help you grow as a programmer. You're going to have to learn HAML / LESS / JavaScript anyway for the front end.

.NET (0)

Anonymous Coward | more than 2 years ago | (#40197565)

ASP.NET

Java, Struts and Velocity (1)

TigerTime (626140) | more than 2 years ago | (#40197585)

Get a Tomcat server up and running and deploy your app there. Use Struts/Servlets for you Java structure and navigation, and Velocity to populate the templates. This is Tier 3 development (Keep the Logic, DataAccessObjects, and Templates separate). Velocity takes all of one day to learn and will save you a ton of time in the long run so you can focus on the HTML and the JAVA

http://velocity.apache.org/engine/releases/velocity-1.5/user-guide.html [apache.org]

Do NOT go the PHP route. As someone that works for a Fortune 500 company and who has been in the business for 12 years, you don't want to get mixed up in the mess that is PHP debugging and updating. With PHP you will have to learn a new language that doesn't extend very well, is a pain in the ass to debug, and you'll have a tendency to intertwine your application logic with your template, which will make it an absolute bitch when you come around a year later and want to change the look and feel of your site.

Stick to your comfort zone, but build on it (2)

laffer1 (701823) | more than 2 years ago | (#40197611)

Modern web applications use ajax. You need to pick a javascript library. Depending on your needs the right answer might be JQuery, Dojo, YUI, Prototype, etc.

If SQL Database:
You need to pick an ORM. Most people work with them now. The popular Java solution is hibernate. I'm a big fan of Apache Cayenne. You also need to pick a database. MySQL (or fork) or PostgreSQL are good choices.
else if NoSQL
pick a NoSQL database, but avoid CouchDB. Hadoop, mongo, cassandra... there's loads of them.

You need to pick a servlet container:
Tomcat, Jetty, ...

You need to pick a Java web framework:
There are hundreds of choices. Spring is the hot thing. There are many unpopular choices that are good like Wicket, Click, etc. It really depends on what you're building and how it can integrate with your ORM or NoSQL database. Click + Cayenne work well together. Wicket + Cayenne do as well. Spring works better with hibernate, etc.

For JSON, SimpleJSON is a good choice.

You also need to decide how you're hosting it. If you think you're going to do cloud computing, plan for it at the beginning of the project. Different providers offer NoSQL and SQL database options you can just use. It may simplify things. You also need to program significantly differently for a cloud environment to keep costs down. More requests mean more money with some. Lowering CPU load or minimizing database queries might matter too.

There isn't one right answer now. Young people use Python, PHP or Ruby. I see a lot of interest in Python. I'm not a big fan, but it's not a terrible language either.

If you think this could take off, sticking to popular software will aid in finding developers later. At work, we have a lot of problems because of our archaic stack of Mod Perl + (Ingres, PostgreSQL, MySQL, BDB and Lucene) + Apache HTTPD + HTML::Mason + DBIx::Class + legacy C apps running on Linux VMs. We're starting to throw in more java projects now. When I say legacy C, I mean pre ANSI C. This stuff was written in the 80s. No one has even heard of Ingres.

I have oddball tastes in Java like Cayenne and Click and I've made successful projects with them, but it won't help you on a resume and it won't be easy to get people that already know the technologies.

As for browsers, don't worry to much. If your site works in Safari or Chrome and Firefox, most people can see it. If you throw in IE9, you've got most things covered. Safari and Chrome both use the WebKit rendering engine, but have different JavaScript engines so you will want to test on both, but they do usually render similarly. Bonus points for old IE or Opera. Most browsers are trying to be standards compliant. If you want to target Opera, avoid Dojo javascript library.

A front end framework helps too (1)

Ariven (256118) | more than 2 years ago | (#40197625)

Regardless of what back end language you pick, a good front end helps a lot. I have found the twitter bootstrap package to be very helpful..

You can find it at: http://twitter.github.com/bootstrap/ [github.com]

They have a nice dynamic setup you can use that allows your page to collapse down to be easily usable by phone browsers, tablets, etc... It also gives you a good display framework to start from to ensure consistancy of your user interface.. and since the display is css based, you can tweak it how you want.

Java is great for websites (4, Insightful)

htnmmo (1454573) | more than 2 years ago | (#40197631)

Almost all the sites I've built are written in Java. Stick with Java. I've written sites in PHP and I've also had to work on updates to some PHP sites. If you're already familiar with Java dealing with PHP will feel like a joke. PHP is great when you don't want to write your own software since there are so many publicly available stuff out there in PHP. Don't worry, you won't find a lack of Java libraries that will do anything you want to do.

Don't bother trying to learn a new language because you'll just slow yourself down trying to learn the semantics of the language instead of the details of the new libraries you'll be using. I know java gets a bad wrap in terms of performance but I've always found that Java kicks PHP's ass in terms of performance in the tests I've done.

The main issue with java is that when you're using a servlet container like Tomcat, the process runs constantly and takes up memory. It's not that much but it's hard to find Java hosting because the memory issues makes it hard for a webhost to put thousands of websites on the same server.

Your best bet is going to be to find a cheap VPN when you get started but check the big webhosts to. I remember LunarPages used to offer JSP support in the past.

There are a bunch of different frameworks. Stick to ones that are popular because you'd rather have some limited functionality now rather than an unsupported framework in the future. Which has happened to me.

I believe right now that's Spring [springsource.org] but Struts is still pretty popular too.

I've found NetBeans [netbeans.org] to be a great IDE and it supports Spring.

First, dont ask in slashdot. (3, Funny)

140Mandak262Jamuna (970587) | more than 2 years ago | (#40197635)

If you describe your idea in sufficient detail and you don't even know which tool to use, someone else will beat you to it. If you try to hide important details, you would appear to be cagey and would not be taken seriously. So best thing is learn some tool and get to work. A good idea will work even if the tool is less than optimal. A crappy idea would not flourish even with the best tool.

Most importantly, stop listening to strangers like me.

Facebook, Google+ (3, Informative)

ZombieBraintrust (1685608) | more than 2 years ago | (#40197637)

For the general public, it will be a site where they can view upcoming events, filter them by type, date etc. and view details of events they're interested in. There will also be an admin section to the app where organizations who want to post their events can log in and set them up.

Doesn't Facebook, Google, Microsoft, Yahoo, and RSS feeds already have this down? You may want to consider using API's that hook into existing infrastructure rather than reinventing the wheel.

How about Vaadin (0)

Anonymous Coward | more than 2 years ago | (#40197669)

I have to admit that my preference does not go to Java, however friends of mine who do work in the Java world all seem to like Vaadin https://vaadin.com/home

Spring MVC (1)

Post-O-Matron (1273882) | more than 2 years ago | (#40197691)

I work as a Java developer and we're building websites on an SOA architecture with restful backends. In this regard we see the web app as "just another client".

We use spring MVC for the browser-facing server app, and Jersey for the backend (I use the terms loosely here because this backend is still public-facing since it serves the mobile apps as well, so it is in itself a standalone secure web app).

We use velocity or freemarker for the web app pages.

I would warm-heartedly recommend this setup, it's hard to go wrong with it. That said, it's only one valid approach.

Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Create a Slashdot Account

Loading...