I'm a Java/.NET developer but on my spare time I've started looking into WordPress (for personal projects). I'm not as good in PHP as I am in Java or C# but I manage. With that said, I accept tips from either language (since it's personal projects I prefer to go open source cause it's free).
What I'm trying to do is creating a small multi-language business web site with standard pages (home, about us, contact us and so on), news, a simple web shop (just listing the products is good enough in the beginning) and a photo gallery.
What I like about WordPress is that it's very flexible with custom post types and so on (since I'm gonna need news entries, products and different content types on the same site). A set back is the admin interface for a "client" with minor computer knowledge, they have to "Create a Post" with post type product instead of the menu saying "Create Product" or "Create News Entry".
So basically my needs are:
Standard Pages (Start page, contact form page and so on)
Multi-Language (In both content and pages)
Web Shop (Really simple one)
Photo Gallery (Simple as well)
News
"Company Admin" (A user that can only access publishing stuff. Create news, pages and so on. Not install plugins or manage layout)
Simplify Admin GUI ("Create Product" instead of "Create Post" with product as post type)
The question is: What CMS should I use?
Hope I made it clear enough what I'm trying to achieve!
Any input is welcome! Thanks in advance!
I've had good results with both Silverstripe and Concrete 5. They both have user management and an interface that can be used by novice users. What's more, they are both built upon a custom MVC framework and expect customization to be done by a programmer rather than in the CMS itself. This way, the interface contains less distracting configuration stuff.
If this doesn't work for you, there's always Drupal, which is very customizable and specialized in custom page types as well.
Good luck!
I just read that you chose for Silverstripe. I'd love to hear about your experiences with it as I myself have never tried that one.
However, I too would have recommended CMS made Simple™ if I had seen your post sooner. I have made dozens of sites with it. Compared to some of its brothers and sisters the admin interface is very intuitive and easy to manage. I usually even say "heaven for the digital illiterate end customer".
However, for the person who builds a site powered by CMSMS it's a must to know his/her way around (x)html and css. The same goes for basic knowledge of installing databases and permissions on folders.
The system is basically intended for designers and developers with a professional background and does not provide you with hundreds of ready made templates. It's up to you to make them yourself if you want to create something original. However, if one has the upper mentioned knowledge, freedom is at hand. No restrictions in layout :-)
Last note: if you want to do a multilingual site in CMSMS, I recommend you look here: http://www.i-do-this.com/blog/25/Another-method-of-Multilingual-CMSMS-Page. This method gives you extreme control over SEO and the URL structure. I point you to this as some time ago the MLE fork takien was telling about in his post has been proclaimed unsupported by the core dev team. The reason for this is that they cannot guarantee breakdown on updates to newer versions as it is actually a third party fork of CMSMS. The developer (Alberto Benati) who made the fork has moved the project to his own site.
Modern CMSs with the addition of their plugins and extensions are more or less doing what you need. I've used Joomla before to build up sites with most of your requirements with minimal effort. I also have a Java background and I've found Liferay, which is written in Java, very interesting. At this stage it's a mature product with extensive user/group customization and Portal development in the form of portlets.
Concerning Joomla addressing your requirements:
Joomfish for multilanguage support
Home page treated specially, contact and form pages in the form of modules
VirtueMart for shopping cart
Lots of photo galleries to choose from in the form of extensions
I think built-in News functionality as module (not sure) but as well lots of extensions
"Company Admin" as you describe can be a lower privileged users.For Joomla Admin separation have a look here
Not sure what you mean by simplify Admin GUI. A user with lower privileges will have fewer settings in the site after they login.
Please don't use Joomla! I've been using it for years and it gets the job of putting together simple sites done quite well, but if you want to change any of the aspects about how your site works, it stops being simple to use. You will end up hacking PHP files to achieve things that are possibly very easy in other CMSses.
I had very good experiences with Drupal, where you can define your own Classes of "posts", so, for example, "Products", which will have special fields that are only associated to products. Joomla will never be able to do that!
Apart from that, Silverstripe is a good CMS that's very easy to handle. Wordpress might not get you far as I'm concerned with building shops, but I haven't looked into it.
for your needs, I would like to recommend yo to choose CMS Made Simple (CMSMS) rather than Wordpress. CMSMS has multi language feature (choose multilanguage package) which is very easy to setup and manage.Don't worry about customization, CMSMS is easy to use, nice admin page, easy to make your own themes.
I'm not disfigure Wordpress, but since peoples not good in PHP, their site would be just another Wordpress blog. :D
There has been a new module added to CMSMS that makes multi lingual setup much smoother. More information can be found at this very useful blog:
http://blog.arvixe.com/creating-a-multilingual-cmsms-site-using-mlecms-module/
For the gallery for wordpress, the best solution in my opinion is to use an outside gallery, hosted on Picasa or Flickr for instance, and a simple plugin (you have a few to choose from) for that platform.
For translation, all the plugins I haved tried are very easy to break with other plugins or with WP upgrades if the plugin is not upgraded with it. For just two languages, I would just use a category based language organization. Not a perfect solution, and you will need to tweak the templates a bit, but it have worked for me.
Having said that, I would probably prefer to use Joomla if this were a project for myself, you would only miss the simplicity of Wordpress for plugin or template modifications (or even creation from scratch). And Joomfish is much better than any language support in WP as far as I can tell. And the same goes for VirtueMart, which is simple, easy to install, easy to use and have been there for years (= lots of modules, support, documentation, etc).
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
For those who might vote to close this question due to "not constructive - As it currently stands, this question is not a good fit for our Q&A format." - Would be great if you would suggest where should I post this question (https://softwareengineering.stackexchange.com/ ? or any CMS-focused forum?)
Similar questions have been asked before:
https://stackoverflow.com/questions/918722/java-or-php-for-homegrown-cms
https://stackoverflow.com/questions/4005811/is-there-a-good-cms-for-java
https://stackoverflow.com/questions/8298790/java-web-cms-recommendations
https://stackoverflow.com/questions/4837502/recommendations-for-a-lightweight-java-web-cms
https://stackoverflow.com/questions/1939238/can-you-recommend-an-easy-to-use-easy-to-develop-cms
All of them are a few years old, so I am wondering if there are new recommendations / discussions around this.
Some background: We are a Java shop, we create / maintain websites for our clients, our tech stack are Java, Spring, SQL, JSP, HTML5, JQuery, Tomcat, JBoss, Maven, etc ... the usual stuff. So far in terms of "content" we either put it in some properties file read in by the JSP for copies (eg. description of product X) or back-end service that provide dynamic content (eg. what's the current value of product X).
Now we are rethinking our approach to managing content because we are managing more and more properties for the client with the same content (eg. a website, mobile website, mobile app, etc), so we definitely want to avoid having multiple copies of the same content spread around.
A few things I am particularly looking for:
Java-based (because we are Java shop: 1) more expertise in handling Java-based stuff and 2) avoid introducing another tech to the stack)
Extensibility / customization. Need to be able to customize the CMS (which is why we want to stick within our Java expertise) so that it can be extended to connect with other web services to consume content, etc.
Focus on content - we need clear separation between content vs UI-render, going back to what we are looking for where we will need to deliver the content into separate properties.
RESTful service / API to access the content - same as above. We need the content to be accessible directly as a JSON / JSON-P /. XML feed.
Need to have a decent UI to work with and the more intuitive the better for business user because some of our client that might be moved to the platform will likely want to be manage their own content
Multilingual support
Open source / low cost
So far, several options that I have are:
Adobe CQ - Looks to be the most ideal solution, but unfortunately it's cost prohibitive
Hippo CMS - Looks to fit what we are looking for, I am unsure of how well it's documented, tutorial / how-tos seems to be quite sparse, their market share seems to be bigger in Europe than in North America.
Liferay - More focused as "portal" as opposed to CMS providing content
Alfresco - More focused on "documents"
dotCMS - Like Hippo CMS, seems like this one might fit our needs.
Magnolia CMS - Looks around the same alley as dotCMS and Hippo as well. From the comments I've seen seems like they are more focused on a single website and not clean separation between content vs UI.
I personally don't have much direct experience working with CMS before.
Your thoughts / comments on each of the options above, or if you have other solutions in mind not mentioned here, would be greatly appreciated! One of my challenge is that we need to make a really sound decision because whichever path we decide to go down with, we would likely be stuck with it, decision is not something that can easily be discarded and start over.
Personally I have some experience with Hippo and a lot with dotCMS. I do know a little about Alfresco, Liferay and Magnolia but I have not worked with them before. I have no experience whatsoever with Adobe CQ, because I never took the time investigating. This is because of the high costs being a no go for many of our clients. Alfresco is indeed a better solution if you're looking for an online document management system, which I think you aren't. You are right about Hippo, Magnolia and dotCMS being somewhat similar, which isn't that strange because they try to solve the same problem: being an Enterprise class Java based Web Content Management System. They focus heavily on managing the content which can be used in pages that are also manageable with the CMS.
To be honest: I have a bias towards dotCMS because I have worked with the systems a lot and know much about it. I thought I'd explain why it works for us so you can take that into consideration. I work in a Java shop that does a lot of middleware development for its clients using JBoss and the whole EE stack. We connect old (Cobol) and new systems together and put a shiny new web interface on top of that middleware that targets both admins and consumers. To be able to create these interfaces we need a CMS that does a few things well:
Java based (because we're a Java shop this enables us to have the same people work on the CMS and the middleware)
Horizontal scalable to tens of servers without too much hassle. In the classic case when scaling out to multiple servers the database and the assets folder are shared between the nodes. This could be a problem when you have many nodes, but in practice it's not such a big issue because most of the load will hit the index and not the db or the disk. In 2.5 and up dotCMS offers a "share nothing" mode where each node has its own database and assets folder, but this does requires you to use an additional (read: licensed) authoring server that pushes the content to each of the nodes. I have not played with this setup myself, but it sounds promising, especially because each node can be a simple and cheap box that only uses postgresql / mysql and tomcat and because there is no single point of failure anymore. In the classic case if the shared assets folder or the db would die all nodes would be down as well, except when you cluster the db and the disk as well which is expensicv to do. With this "share nothing" setup this is no longer the case. As I said: I have no experience with this, but it sounds like it might work.
Admin interface usable by both power users and non techie people (clients). Not everybody is "good with computers", but they too need to be able to manage the content (very often these people work in the marketing department of our clients). dotCMS offers ways to create admin interfaces that show only a few of the functionalities dotCMS offers. This prevents them for having to understand the whole system which speeds up training and acceptance.
Structured content. This is biggie. We want to be able to define many types of content all with a fixed set of fields, just like a database table. All without having to rebuild or restart the system. The people that would define content based on this structure (the name dotCMS uses for these types) cannot enter invalid data because the system protects against that. This makes building websites so much more future proof and convenient. Especially for developers.
Focus on content first. The first months that we used dotCMS we actually only used dotCMS for managing the content itself and exposing that through JSON API's. We did not use CMS features like defining templates and creating pages. This works fine and sounds like the stuff you're looking for. dotCMS has a JSON/XML Webservice that returns content based on queries. We use this a lot in almost all our projects, see here for more info: http://dotcms.com/docs/latest/ContentAPI. Using dotCMS itself for the whole frontend is also a possibility. Especially with the Spring controllers that it supports and the CSS-framework agnostic new template designer it is a nice way to build systems that require more than just some content.
Multilingual. dotCMS offers a few ways to do this. You can create content in all languages that you need, even non textual content such as images. Because of the "content first" approach many things are content in dotCMS , and can be treated as such, including creating a version for each language that you need.
Open source. dotCMS offers a community version that we use most of the time. Only for the pro features like load balancing, using oracle for the database, etc, a paid version is necessary. And even then the costs are manageable. See http://dotcms.com/products/editions/ for more details about this.
Internal caching mechanism. Because of the high load some of the sites we have build need caching. DotCMS uses the Google Guava for their caching which works pretty well.
Extendability, also a biggie. We needed to be able to extend the functionality of dotCMS for obvious reasons. DotCMS used to only offer an old school way of doing plugins that is kinda ugly and is based on an ant script that overwrites the dotCMS classes with your own. It works fine, but I always feel dirty after writing such a plugin. However since version 2 they offer an OSGi based plugin framework that is pretty sweet and much more developer friendly. It went out of beta in the 2.5 version. We're planning to port all of our plugins to the new framework.
Multi host. We need to be able to host multiple sites within the same CMS. DotCMS provides this natively. It's also a nice way to share common stuff between multiple hosts which we use a lot.
Of course there are also down sides. Here are a few:
Web CMSes like dotCMS store its content in a database and the assets as files on the disk. This makes versioning and synchronizing between different servers a pain in the butt. Starting from the 2.5 version dotCMS offers synchronizing tools that enable you to push content from one environment (for instance UAT) to another (for instance PROD), which helps. But not being able to checkout a single version of the content from something like GIT or SVN is very annoying. Especially since we as Java developers are accustomed to things like automated testing in a continues integration environment. Of course you can store the database as a SQL statement and the assets directory but that's slow and not so "nice". But then again all systems that store state in a database have this flaw.
DotCMS takes some time to learn. It's not a small CMS like Wordpress that you'll understand in one afternoon. It has many features and is very powerful, but you'll most likely need a day or so to understand the dotCMS way and then another couple of days to understand all the API's. I do encourage you to first read some docs and tinker with it before building a real production site: many ways lead to Rome, but some of them consist out of quicksand. :)
DotCMS is RAM hungry. To keep things fast it cached everything, so if you have a lot of content it will eat away at the RAM you have available. You can tweak this but it's easier to just give it enough RAM we have found.
Not all configurations of WebDAV + editing client are compatible with dotCMS. For instance on a mac I have found that you best use Cyberduck as a WebDAV client and Aptana as a text editor. Other setups do freaky things that dotCMS does not like much. You got to play a little to find out what the best setup is for you. I did find that if you file a bug on their github they get it fixed in the next release. They told me that WebDAV is hard to get right because it's not a fixed standard which I understand but it can still be a pain in the butt.
If you want to learn dotCMS read their -not so bad- documentation: http://dotcms.com/docs/latest/TableOfContents and also take a look at their demo site (http://dotcms.com/products/demo/). In the demo site you'll find examples of all the concepts that dotCMS offers. Oh and check out our own free dotCMS plugins as well. Especially the JavaScript and CSS minifier is very handy: http://geekyplugins.com/.
Hope this helps a little. Let me know if you want to know more.
Disclaimer: I work for Hippo, so I'll try to only answer with facts and not opinion :-)
Hippo is fully Java based, front end is language independent, but geared towards JSP or Freemarker, optionally you can use a REST-interface and use whatever.
Many plugins are created and collected at the Hippo forge.
Content-centric design has been a staple of Hippo development, should pose no issue.
Yes, by default all JCR calls are available. Apart from that you are able to define your own REST interface to suit your needs, example in the demo, documented here.
I dare say yes, in my experience most non-tech users find the interface easy to understand.
Multilingual is easy, part of the default multi-channel setup.
The community edition (which is complete, no bait-and-switch) is open source, there is some enterprise functionality behind a proprietary license. The license also opens up support avenues, besides the Google Group and Stack Overflow.
Now, on your comment about the documentation being incomplete, let me offer my opinion:
You are right, the documentation is an ongoing struggle. Most stuff is documented, but is hard to find. We are working on improving the overviews, introductions and tutorials, but we are obviously not done yet. If you can't find anything, usually the community is able to help and point you in the right direction.
I have a site made in java-spring-hibernate we made our self from scratch, it shows a catalog of product and i have the logic for it. I can also manage content and product/categories with it with an administrator we have made in flex. We probably shouldn´t have gone to all the trouble since there are so many cms out there, but what's done it's done. The site renders the content managed in flex in html with jstl.
Thing is now i want to add a ecommerce to it, for that we would have to add all the payment,shipment, orders logic to the administrator and the front end (cart/user). How ever, since there are already things like magento store, i was thinking maybe i should switch and leave my beautiful app to die :/. As i was researching i stumbled upon broadleaf commerce which is an ecommerce back end made in flex-spring-hibernate. It´s relatively new and it supposed to have an active development team. So i guess my question is, Why? if there are so many opensource commerce solutions do they make this kind of effort in developing ? i mean you still have to build the GUI for the users side. Whats their difference with magento, what are the pros ? should i try to integrate with broadleaf ? what are the assests oder then keeping my loved old app ?
Let me start off by identifying myself as an employee of Broadleaf Commerce, so I may be somewhat biased. The reason for developing Broadleaf really has everything to do with the platform itself. If you look at the open source e-commerce solutions out there, you are correct in that there are a number of them. However, when you start to filter them by various parameters, including Java, Spring, Hibernate - the list becomes very small. It was always our intent to come up with a compelling e-commerce platform targeted at today's enterprise users. With that theme in mind, we knew we had to go with Java, Spring and Hibernate. This is the core technology stack that is preferred by much of the development community, especially in the enterprise segment. Also, to satisfy the complex domain and integration requirements of these users, we designed the system from the ground up with extensibility in mind. We think of extensibility as a natural extension of the Object Oriented programming techniques you already practice daily. This translates into leveraging the power of Hibernate extension and polymorphism for the domain, as well as the ability to override, tweak or completely replace every service, DAO and entity in the codebase. Our configuration is also extensible, and goes beyond standard Spring application context override to provide more configuration merge capabilities that allow us to pull away some of the additional Broadleaf configuration complexity so you can focus on the configuration that matters for your app. So while the end results may be similar between our software and others, we believe the decision on what path to take to achieve that end goal is an important one and Broadleaf Commerce offers a powerful and flexible way to get there.
I feel I should also briefly mention, since you mention Flex above, that we are currently in development of our 1.5 release, which includes a re-worked administrative application based on GWT that will replace our current Flex-based admin. This choice has allowed us to propagate the same theme of extensibility that we already embrace in the core platform to our administrative platform. The new admin will offer the same flexibility for override and replacement through Object Oriented programming paradigms that developers already enjoy in the core platform. In addition, the admin application automatically recognizes your entity extensions and includes your additional fields in the admin interface without any coding effort on your behalf. The admin interface also honors entity polymorphism and will adjust the editing interface according to each type (think of a media product that has two extensions in the form of book and movie - even though they are both media entities, they each have unique fields and the admin interface honors this distinction). We're also working on changesets and some other interesting features for 1.5. We're targeting milestone releases beginning around April, so stay tuned for more.
What Spring and Hibernate are missing is a proper datamodel and erp application so everybody starts building their own.
We are all building together on the same application and framework.
That is just OFBiz: framework and a proper datamodel and application. You know the best part? It is not controlled by a single company but by the biggest open source foundation in the world: The Apache foundation sponsored by all large IT companies.
Anybody starting his own implementation of either erp of ecommerce should really reconsider.
More info on Apache ofbiz?
http://www.ofbiz.info
http://ofbiz.apache.org
Regards,
Hans
There is one Java Connector for Magento's API called as Magja.
Note: No support after 2012!
I'm building a webapp that will need to provide some real-time tracking information overlayed on to some maps. My requirements are fairly simple:
I need to take a series of lat/long co-ordinates, and overlay simple markers at those positions with a small bit of associated textual information (ie, just a label and/or tooltip at the marker)
allow the user to zoom/pan
use open client side technologies (eg, AJAX, not flash/active-x)
a client-side control to allow them to configure an auto-refresh interval would be nice (but not necessary)
be deployable in a standard servlet container like Tomcat
by deployable in a private network (ie, can't go to a web service on the internet to fetch data)
provides basic map data (I do not have my own)
commercial or open source is fine
This question suggests GeoServer + OpenLayers, but required an open-source solution (I do not). A casual glance at those sites seems like it would be a reasonable amount of effort to get that going, and it's not clear to me that GeoServer actually comes with map data. This is key, I do not have my own map data. I want a library that provides basic map data. I don't need detailed street information, just basic geography, political boundaries and major cities is enough.
I found Dundas Maps which looks like it would serve my needs fine, however, it is for ASP.NET so it is not an option.
Geoserver doesn't come with map data, but then no map server does. Depending on which area of the world you need data for, you can check e.g. Openstreetmap, Natural Earth Data, and local authorities. You'll have to serve the data (= background map) from your own servers to meet your "by deployable in a private network" requirement.
Setting up Geoserver with an OpenLayers front-end is pretty straight-forward. Labeling and customizing markers is simlple (Geoserver uses standard SLDs). The "preview" pages Geoserver provides by default are a good basis for development of your website and Tomcat is the recommended container for Geoserver afaik.
I have worked on a inhouse project a work that provides almost all the features in ur bullets, but we use GeoExt for the UI and geoserver as our server. GeoExt provides a very rich UI using Ext and OpenLayers. Also some of our data has been take from Open street Maps.
Another option is Mapguide, an open source GIS platform.
Without knowing exactly what you are doing on the server side, I think you might find GeoServer usable. I have recently read through the licensing of GeoServer and my understanding is that you can use it as a service with unreleased software without issue which is how the software is intended. If you alter the GeoServer code and redistribute, you would have to contribute your changes.
GeoServer used in the case you are describing is different from a scenario like ExtJS where it is a part of the application. Have a look at the licensing again and look for scenarios that explain the interpretation to set your mind at ease. The company I work for uses open source GIS software quite a bit and this is how we interpret it. BTW I work with one of the contributors.
+1 for OpenLayers & GeoServer. There are other viable open source options.
If you are willing to spend money, do at least consider the commercial GIS solutions like ArcGIS Server. They are very successful, and it's not just due to marketing muscle. The deal is you pay them money, sometimes serious money, but you save developer time - which of course is also money.
You should have a look at Geomajas (http://geomajas.org/). This is a solution which is all-Java and integrates both front-end (GWT) and back-end (using amongst others Spring, Geotools, JTS,...). It is open source (AGPL), but other licenses are also available (from Geosparc).
I think it servers all your needs (though for map data, you would indeed need OpenStreetMap, Natural Earth or similar).
I know some people have worked on something similar to what you mention. There was even a talk at foss4g about display of a soccer match using Geomajas (the presentation should be online, but the foss4g site seems to be down at the moment).
Try http://www.opengts.com/ an opensource project for free GPS tracking built on Java
We are going to create Jar Store the way like App Store works, but for Java Developers.
Everyone will able to submit and sell custom .jar library which solves some little problem, but solves it very good to save other developer's work time.
The only undecided question is how to prevent .jar copying or publishing bought .jar to the Net.
EDIT: This can probably achieved by using strong copyright policy? Suggest please!
EDIT 2: I imagine Steve Jobs asking:
How we can prevent iPhone Apps from copying?
— You can't it's just a files on the iPhone which can be easily copied by anyone.
Whoa! Did we just go through a 12-year time warp?
This is exactly what JavaBeans was intended to do, back in 1996-7.
It was intended to solve a technical challenge of pluggable, re-usable code, which would of course engender a vibrant and lucrative third-party marketplace of drop-in components. People would make,sell, buy, and consume these re-usable pieces of code.
Then, that fantasy was replicated when server-side Java grew in popularity. The idea behind numerous companies was that they'd act as brokers and commercial exchanges for re-usable pieces of code. The names of these companies escape me now. There were many.
Most of them faded, and some of them evolved their business model away from acting as an commercial exchange, and towards selling software directly. In particular, they moved toward selling the thing they had hoped to run their business on (their "ERP"), as a piece of software that enterprises could use internally - a component repository supporting re-use within an enterprise.
Darn! The names of the big companies that made this transition escape me now.
An interesting question is, why did App Store succeed (wildly!) while the vision for JavaBeans stores, or stores for enterprise Javva components, never caught on.
I have my theories but... not least among the reasons is the phenomenon of "open source" - where you can get pretty darn good re-usable components for free. Before you go tilting at this windmill, I suggest you study some industry history!
For this to work you need to have content. Really good content. With excellent documentation.
I would imagine this is the first obstacle you need to tackle.
With this business idea copyright protection in both technical and legal way must be you core competences since this is the main part for your added value.
If you prevent something from copying, how are people supposed to distribute their software? I'm not writing enterprise solutions to run only on my notebook.
you can't don't even spend any more time on trying.
rephrase your question to
I want to restrict someone copying a
plain text file.
Same problem with a .jar file. You can put all the legal restrictions you want, but it won't stop anyone from making a copy of your file if they are able to use it. Go ask the RIAA how effective they are at stopping the copying of .mp3 files.
I would also offer what do you think you can offer than the Open Source community doesn't already offer in the Java world? The Java ecosystem is very mature and very full featured from a library stand point. I can't imagine that anything you offer, that might be the least bit innovative, some open source project won't spring up and create a free open source version of.
I am in the process of writing a Java based web site. I am trying to figure out how to manage some of the content that will appear on different pages. Obviously I don't want to hard code the content; but on the other hand I also don't feel like using a full blown CMS like Alfresco or OpenCMS since I think that it is complete overkill for my needs.
So my question to the experts out there is what is a good way to separate content from the code and maintain it independently without resorting to a large scale CMS? There has to be some sort of middle ground that allows me to change content without having to redeploy the code or go through the other extreme with some large CMS. I don't need all that workflow or versioning stuff etc. Maybe there is an open source library or API that allows you to manage content in a simple way. So what are the opinions out there?
Cheers,
Luis
Beside Tomislav interesting advivce,
You can rely upon template engine (like freemarker or velocity or stringtemplate) to have on one side your page content and on the other your page rendering. This is, in a more evolved fashion, what good old JSPs used to do. But with a twist : using these template engine, your pages can be easily loaded from XML, as an example (I know, for having used recently freemarker on a personnal project that is is quite straightforward).
Alfresco is not designed to build web sites on (although yes, you can). You could try with Daisy ("a comprehensive content management application framework") or one of the other similar solutions from the open source CMS in java directory.
In the end, you might fall back on a relational database and the web interface technology you are most familiar with. Having said that, I would expect Grails or Rails might offer the best value-for-money if you're aiming for a moderately complex web site (authentication, separate back and front end etc.).