What is the meaning of robust framework( related to programming)? - spring

What does it mean that a spring framework is robust framework ( I know it is good thing, but don't know the exact advantages) ? If it isn't that what kind of problem arises ?
2) How to know a framework is robust or not ?

That is a very generic and broad question, but still, I will try to provide a short answer.
Spring is an almost 20 years old Framework that is wildly used in the Java world and thus it is battle-tested because so many people in so many different contexts are successfully using it. It is updated frequently with new versions adding features and improving others, usually following the tendencies of modern software development.
In short, I believe this is why you may hear someone saying that "Spring is robust framework".

Related

XML and YML in context of Symfony2 and SpringMVC

I'm on my way of getting a decent programmer but it seems that the things there are to learn are countless. I know that there's never a certain answer when one ask which is better, but I'll try to make my question more specific hoping for a more certain answer.
I'm using/working with PHP for a year now. Starting from the most simple examples, now I'm using CodeIgniter and various libraries/frameworks for the frontend and I feel like I need to make a step ahead, which in my case is learning another PHP framework - Symfony2 and also, because I'm getting my masters degree on "Software technologies" now and there I intensively use Java, I want to try and start learning both - Symfony2 and Spring. Among the many questions how to accomplish that without ending with just a lost time, the usage of XML, YML is something where I see an option for getting an edge in my work.
Java is heavily XML, and as far as I know, there's no escaping from XML in Java. But in Symfony2 one have a choice and it's very tempting to use XML there so I won't need to learn one more thing among all others but most of the examples I see for Symfony2 use YML and I'm not very sure that skipping yml and trying to stick strictly to XML won't turns back on me.
I'm not experienced neither in Spring or Symfony so if it was you learning both of them at a time how would you approach? Using XML for both, or using YML for Symfony2?
I'm making my money as a Symfony developer, while developing my personal project in Spring MVC, so, since I've seen the both worlds, I think I have something to share on this topic.
I'm developing in PHP for like 7 years, and I know Java as a language for like 5 years, but I'm developing my first “real” Java project just for a month or two. Eventually, I want to ditch PHP for good and switch to Java and/or other JVM languages like Scala.
What's the reasoning for this? Well, don't get me wrong, Symfony2 is a great framework and I really love it. I believe it's the best PHP framework out there. But... it's still PHP, you know. No matter how great a PHP framework is, I just can't stand PHP as a language for too long. What's so wrong with PHP, you ask? There is a great article explaining exactly what I've been feeling about it for a long time (at least read the analogy section).
And since I prefer static binding and strong typing, I'm more comfortable with Java for this reason too. It's just so great what a Java IDE does compared to what the best PHP IDE does. I think I'm using the best IDEs for these languages out there — IDEA (with the PHP plugin) or PhpStorm — and Java support is just so much better it makes me want to dance.
I'm not saying that Java is the greatest language of all, but it's a huge improvement over PHP. I think Scala is very promising, but since its infrastucture/ecosystem is not mature enough for me — a pragmatic who likes to get the end-user projects done, compared to guys hacking the languages themselves and developing frameworks — I'm staying with Java for now.
So, for me it boils down to the language, community and ecosystem. While the PHP community has some great developers and I enjoy having conversations with them on IRC or other places, the Java community has much, much more great developers developing much, much more great stuff for the much, much bigger Java ecosystem.
Apart from those 3 things, I could add that Symfony is much easier to learn — its book and cookbook are great and really to the point, while I have to hunt down a lot of information about Spring in numerous books, blogs and its vast documentation.
Speaking of YML and XML, you can do a Symfony project in XML only, and you can do a Spring project completely or almost completely without XML — especially since version 3.1. I use YML in my Symfony projects but XML for bundles I share.
And since Symfony DIC and security are based on Spring and Spring Security, and Doctrine is based on JPA, learning idioms of one of these frameworks, you learn a lot about the other one. What I'm really missing is a Twig analog in the Spring MVC world — JSP gets the job done, but it's not that great. I know there are other view technologies Spring MVC integrates with, but to me it seems like JSP is the most endorsed one.

How to choose a DI container? [duplicate]

This question already has answers here:
Closed 11 years ago.
Possible Duplicate:
How do the major C# DI/IoC frameworks compare?
There being so many DI containers, I feel kind of lost. I'm new to the DI pattern.
I'm reading the book Dependency Injection in .NET and I've found DI to be incredible useful in improving a code base, making it loose coupled and more testable.
I now want to introduce a DI container for my dummy project, but there are just so many to choose from.
How am I supposed to choose between Castle Windsor, Unity, StructureMap, Spring.NET, Autofac, Ninject, Funq, LinFu, etc, etc?
I guess a coherent take would be to "just pick one" and start using it (since I figure they're pretty easily interchangeable, specially in the early stages), but I would like to make a more informed decision.
This is like buying a car. You might like a Toyota, but it's just 2.5L engine. You might like Ferrari, but it's too red. You might like Mazda, but your boss doesn't allow you to drive it. You might like Hummer, but then your colleagues would laugh at you. Mix the manufacturers to your taste, there's always going to be something missing for somebody or at some different moment.
My take is - first and foremost, DI is usually better then not having DI. Pick anything and you'll be better off. I'd pick something that:
Has good support in community (so you can get answers)
Has a good backing company behind it (so you don't get to rewrite your code when it goes bust)
Feels good to you (so you don't swear in front of the kids, not cool)
Is not an overkill for the project
Is not just DI, but offers an ecosystem of things that will reduce the time you spend on tasks that you know you can do, just not right now - and then you can focus on things that matter
Is used by a lot of people (so you know that many parts are also tested in real life and bugs filled)
Isn't 5 years old (such as that documentation says it is supported on Windows 98 or something)
My 2 cents - http://www.springframework.net/. I mean, their documentation contents page is like 20 pages long...
Or you just might want to look at some more answers to a similar question:
Which .NET Dependency Injection frameworks are worth looking into?
You can start with the builtin DependencyResolver in MVC3. Later you can easily upgrade to Enterprise Library Unity DI.
Brad Wilson had mentioned a series of posts on How to use DI in MVC3.
My stance is, look at a few - you got the excellent "Dependency Injection in .NET" book already (to that list I would add Ninject, which unfortunately is not covered in the book) - and pick one of them that you understand the best and like the syntax. To get started with advanced features are not really important, just that you do start.
Once you have a IoC container, replacing it should be mostly trivial since all your changes will be in one spot - the aggregate root - and not spread out all over your code base. Using an IoC container will also force you to design for dependency injection if you have not already, that will be the much bigger impact on your projects.
I've been using Ninject and Unity. When you add Unity MVC to Unity, then the code reminds me of the Ninject code.
Both are very easy to implement. Both allow substitution of being config file centric with a launcher class centricity.
I suggest create a 2 hour project, and implement it in each of the ioc di frameworks, and decide by experience which one you like. However, if you do this without looking at other features you may find that you missed something. So do look at periferal features, such as 3rd party support.
In addition to the other great comments - if you install the Unity.MVC3 package, just beware you have to use HierarchicalLifetimeManager if you want your objects disposed with each request. Its worked great but I think you'll find in most cases all the major ones are quite nice.
The question for you is to find one that fits into your environment. Some places allow open source, some dont and in those cases Unity wins out.
The most developed DI container for .NET is Managed Extensibility Framework (MEF) and I strongly recommend to use it. MEF is fast, easy and maintainable across the team together with a perfect learning curve.

Picking a ColdFusion MVC Framework [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I am taking over a lot of the ColdFusion stuff that is lingering at our shop and they are insistent it stay on ColdFusion and that new projects in this area MUST be done in CF - basically this part is non-negotiable. I am not very experienced in CF (haven't touched it since 2003) so most of my development has been in .Net, MVC, C#, Linq-to-SQL in the past 4-5 years.
I was doing some looking around for a MVC framework that I could relate my Asp.Net MVC experience to and hopefully an integrated ORM (I am stuck using CF 8 at least for a while). I have found a few like Model-and-glue, Mach II and Coldbox etc. but I don't really know where to start and wanted to get some opinions on the advantages, disadvantages, etc. of each of them from people who use them.
I know that I will need to do an extensive brushing-up (pretty much re-learning) of CFML, so I don't need to be told that - I am looking into the future here.
Could you please share any information you have on CF MVC Frameworks to help me choose which one will be best for me? Thank you.
Seeing you are NEW to ColdFusion what I would do is pick ONE FRAMEWORK and stick to it. At first it will be hard you will have problems and you will be tempted to drop the Framework you have chosen but don't do it. After you have mastered one framework then you can learn the others.
CF Wheels
ColdBox * * * (Nice Documentation)
FarCry
Framework/1 * * (simple LIGHT framework)
FuseBox
ModelGlue
Mach-II
Most of these you can add
ColdSpring
Reactor
Transfer
An introduction to ColdFusion frameworks at Adobe.com
Most important is to remember we all have our opinions but there is NO real proof what is best. You can even NOT use a actual framework and just code carefully in MVC.
The stuff you are currently maintaining
I would pick ColdBox, ModelGlue or Framework/1.
ColdBox provides a little Code Generation and Framework/1 is very light so less to learn.
I've been using CFWheels for a couple of years and I've not found a better framework. It's inspired by Ruby on Rails and is very easy to learn with great docs and a very active community.
www.cfwheels.org
I teach a course in ColdFusion and use Sean Corfield's Framework/1 in the classroom. It's lightweight and has a very gentle learning curve, which makes it especially good for transitioning existing codebases. But at the same time, it's easy for a team of developers to work with and can scale to large apps. It's the framework that feels least like a framework and most like natural code, to me anyway.
http://github.com/seancorfield/fw1/
I wanted to give a +1 for cfwheels.
Since 2003, I've used Mach II, ColdBox, Fusebox, and Model-Glue for various projects. All had their pros and cons (Fusebox is the only one I'd avoid now) but, with a recent project, I decided to try CFWheels.
Using Wheels has been a blast. I've had a great time developing a site for some friends in my small town who own and operate an Ice Climbing and Guiding site ([www.ourayclimbing.com]). Nice SES URLs, runs great on Adobe CF and Railo, the admin was insanely easy to get going with the Scaffolding plugin, convention over configuration (which I love :)), etc.
In any case, if you stick with the major players (ColdBox, CFWheels, Mach II or Model-Glue), I think you'll be pleasantly surprised at what CF can offer you.
It has to be coldbox really.
It has excellent documentation on the site, and also has a book which has been brilliantly written to cover many aspects about object orientated programming, amongst other topics. Honestly, really impressed by the book, more than I was expecting.
What I like about the framework is that it uses coldfusion code in its handlers, when I picked it up I think the other frameworks where using xml...not sure if this has changed.
The framework is easy to pick up if you are knowledgeable on CFCs, and has several useful features for building sites. PLugins, Debug toolbar, URL rooting for "pretty URLS"..
I cant speak highly enough of the framework..
Theres also a really helpful community here who respond to all my questions really promptly.
I'd suggest checking out Mach-II. It's used on numerous extremely high-profile, high-traffic sites and has been for years. This blog post is a bit old at this point but still has some great info in it in terms of Mach-II in general as well as who uses Mach-II.
It's under very active development (don't let the lower version numbers compared with other frameworks fool you) with version 1.9 just around the corner and big plans for 2.0.
Big features of Mach-II include sophisticated caching and logging functionality, a very nice dashboard for helping with development and monitoring of your applications, a rich form tag library complete with data binding, and tons more.
I'd go with either CFWheels or FW/1. Both are very easy to use for those new to CF frameworks (I still count myself in that group) and don't have nearly as steep a learning curve as some others. Coldbox looks amazingly powerful, but I had a hard time getting my head around it.
You might also like my SOS and COOP frameworks. We are in the process of creating better public docs. It will likely be more like the code you are used to than other options.
You could also look at ColdBox. http://www.coldbox.org/
Loads of documentation and loads of features.
There's also Farcry Core Framework http://www.farcrycore.org/
It has to be said that you'll need to make your own mind up which framework you like best or whether to build one of your own. It really depends on what you want out of the framework.
In terms of ORM for ColdFusion 8 you have Transfer ORM (http://www.transfer-orm.com) and Reactor (http://www.reactorframework.org/)
Though, given that ColdFusion is java application on top of a java server, there is no reason why you couldn't go ahead and use Hibernate (http://www.hibernate.org/) ColdFusion 9 does make using hibernate much easier, but you're stuck on 8 for the moment.
Everything is negotiable. Rewriting the CF apps in Rails 3 would be the strongest approach.
Languages and frameworks built on principles - Ruby/Rails 3 (and other Ruby frameworks), Python/Django 1.2 (and other Python frameworks), ASP.NET MVC 2 - are generally speaking the best thing to use.
ColdFusion and ColdFusion frameworks do not compare because ColdFusion as a language and as a library is hacked together at random and the ColdFusion frameworks (ColdBox, FW/1, Model-Glue, CFWheels, Mach II) can only do so much to smooth that over. For example: CF scopes, lack of closures, lack of loadable classes/components (you can instantiate a component, but not load the component as such), awkward arguments handling, mappings, lack of real applications, lack of delegates and closures, and convenient but non-rigorous approaches to most aspects of the language and library. In comparison, the other languages listed offer rigor plus sugar atop the rigor.

Should app using VCL migrate?

Is VCL dead, or does it have a future as a GUI library? As CLX ended, is there any chance for cross-platform support in future releases?
I've had to do some work with legacy app that uses Borland's VCL(BCB6). Now that new features have to be implemented, it's necessary to revalue alternatives. Whether to stick with VCL or migrate to some other library/framework.
I've never read much what's happening in the field Embarcadero(Borland) tools. At least there seems to be only few VCL tagged questions here in SO and no much luck with google either.
Whether to continue using VCL in your project, or migrate to an alternative depends alot on your requirements. The VCL framework is powerful and mature, with lots of 3rd party components, which makes it a good idea to consider. The alternatives have been improving rapidly, and to point out one as the ultimate choice really requires you to carefully consider your requirements, and validate the strengths and weaknesses of the different frameworks.
Considering that cross platform is on the road map, I remind you that so has 64 bit support been for quite a while. We might see cross platform support, perhaps on schedule, perhaps delayed as we have seen with many previous features. I want to believe its coming because I truly like the VCL framework, but I always have a natural doubt concerning the official road map of the RAD studio series - sorry David. ;)
If you've researched the different alternatives, and found VCL to be the best choice based on its relevance to your project, then I'd consider using the VCL framework, especially if it is a framework you are familiar with. Learning a new framework can - while often a good idea - be a time consuming job. So even though there might be a risk of the framework not being held alive (as will there be with any alternatives) you might save a lot of work staying with the familiar framework, if it is the framework that suits your project the most.
If you do consider going with C++ Builder and the VCL, you might find that the C++ Builder Journal is a valuable source of information, they have a relatively quite forum, but with some interesting posts in it, and some free hints on their website: www.bcbjournal.com.
Of course there is also the embarcadero forums, and this site, it may be a good idea to search the Delphi forums and categories, since it seems there are more active users on these, and by far more posts. One good thing though, is that conversion from Delphi to C++ in VCL related questions is quite simple.
VCL is undergoing continued development.
Cross platform is on the current roadmap.
The embarcadero forums are still a valuable resource.
As a user of VCL I must say that your observations are truly correct. VCL might appeal to you, but the resources available compared to QT and other toolkits is poor at least esp. at SO. Our team have also found several bugs in their components, and have more than once patched components to make our application stable. Still for me the main reason to migrate is that VCL locks you in with a single set of development tools. I must admit that I have a hard time trying to find any really good reasons to continue to use it if you have the resources to migrate.
Given that bcc32 and its libraries is also very buggy, the lockin gets even more serious, The last months me and my team have spent more time fixing issues caused by the compiler than actually developing features. For me this is such a serious impediment that its cost overweight its benefits tenfold. Unfortunately the costs of migrating for us is so high that we at least for now have to endure its pains.

How do you decide between different emerging technologies? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I'm facing developing a new web app in the future and I'm wondering how to decide what framework to use. I've settled on Python as my language of choice. But there are still may frameworks to choose from! More generally how do you choose between different similar technologies that are still in the works as the latest round of web frameworks are? I'm curious what your process is for deciding on technologies you've never used.
Recognize that no choice is perfect -- or even very good.
No matter what you choose, someone will have a suggestion that -- they claim -- is better.
No matter what you choose, some part of your tech. stack will fail to live up to your expectations.
The most important thing is "shared nothing" so that the components can be replaced.
After that, the next most important thing is automatically-generated features to reduce or prevent programming.
Look at Django. Lots of automatic admin features make life very pleasant.
There are a number of things you can do:
Download the frameworks and build something similar with them for comparison.
Look for comparisons by other people, but attempt to understand the bias of the reviewer.
Observe the community at work, see what people are building and the issues they run into when using the technology. Forums, blogs, mailing list etc are good places to check out.
Go to conferences and meet like minded developers interested.
You can also take the approach of using stable versions rather than alpha bits. After a while you might move closer the bleeding edge. People associated with the project in question are generally more biased than those approaching from other platforms, be careful who you trust.
Consider the impact of using a bleeding edge framework versus an established one. Sometimes it's important to your customers that you are on one perceived as stable. At other times this doesn't matter. How comfortable are you with fixing the framework itself? Great developers will learn the internals, or at least know enough to keep things moving whilst a bug is sent to the framework mailing list etc.
Consider some general best practices in building abstractions and reusable code on the python platform. You may be able to save yourself some work in moving to another platform. However, don't be a reuse junkie as this can limit the effectiveness of your use of the framework. The 37Signals guys are right when they talk about extracting frameworks from working code rather than building frameworks from scratch.
I know this is an old posting, but I am in a similar situation (again) and I think there are other people who may want to look for different opinions, and hear of (somewhat) successful experiences.
Since baudtack mentioned Python, I will try to answer this along the lines of my experiences using Python. Here is what has been working for me:
determine the scope of your project - outlining what your application is supposed to be able to do without introducing any programming or design notes will clarify your goals greatly
determine how you would like to work with your code, stack and data:
a. what sort of programming paradigm do you want to work with? i.e. object-oriented, functional, etc. do you want to play to your programming style or do you want to follow somebody else's programming style?
b. use semantic web or not? do you want greater control over URIs and their design? (I found web.py great for this by the way - It is my choice to create REST APIs in Python)
c. do you want to be trapped by framework requirements, or do you want a better separation of the application from the web component, i.e. use a framework to utilize your application as a set of modules, for example. My problem with Django was that I ended up not programming Python, but having to learn more Django than I needed to. If that works for you, then that is the way to go.
d. data stores... some sort of SQL vs. non RDBMS (xml databases like eXist-db with full xquery support) vs. OODBMS vs. a combination of the above? how complicated do you need this to be? how much control/separation do you need to have over how data gets stored and recalled in your application?
e. testing: unit tests... thank goodness for python! if your web app has the potential to grow (as they often do), having a sane and coherent testing platform to begin with will help out a lot in the future - I wish I had learned about this earlier on. oh well... better late than never.
f. how much control over the server do you need? hosting considerations? how much control over an Apache instance do you need to have? OS specific needs? I found that using shared hosting providers like Webfaction has been great. I eventually found I needed greater needs for flexibility and bandwidth. In other words, what can you get for your budget? If you have USD50 to spend each month, it may be better to consider a virtual hosting solution like Linode....
Finally, I echo S.Lott's sentiments that no choice for a solution is perfect, and are subject to obsolescence.
Experience trumps hearsay. I've found that prototyping is a huge help. Make a prototype that uses the features you expect to be the most important for various frameworks. This helps route out any features that may not work "as advertised."
In general though, kudos for being willing to look at new technologies.
I have a set of criteria in different categories:
Activity & Documentation
Is there an active user base?
Is there an active development base?
Is the support responsive and information accessible?
Are there user and development guides and reference material?
These are essential, there needs to be traceability of all of these to build confidence in the solution.
Ease of use
Are basic features easy and complex features possible? I typically give a new framework a test drive and try to roll out a set of use cases to see how intuitive the framework is to use.
Is installation intuitive and simple for a local/dev installation and production deployment?
How is it backed up and upgraded?
What is the effort and UX for implementing a "Hello World" type blog post, static page, menu item, and plugin?
How are versions dealt with for the core & plugins?
Example (on the topic of Automated Testing/Continuous Integration solutions)
Several years ago I evaluated several Automated Testing solution. At the time Jenkins and TeamCity were front runners and in the end I chose TeamCity because of the UX, active user & development base and quality of accessible documentation.
Example (CMS for a blog)
This criteria is also why I prefer to use Wordpress over other options. While wordpress has its shortcomings, the user and development base is strong and active which leads to a software architecture with more potential to evolve over time and maintain its relevance and a development community that provides quality plugins and themes to choose from.

Resources