trying to decide between asp.net and jsp - java

I am wondering if anyone can shed some lights on the situation. I am about to start a project and trying to figure out what solution is best to go with asp.net or java jsp pages
I have personally worked alot with .net and am really happy with the framework and Visual studio as IDE I find it easy to work with and there is a massive community support behind .net, i can get alot done quickly
I have not every written anything use java jsp, there will be a learning curve here , so my experience is limited here. however after seeing jira i am very impressed with its capabilities, it has changed alot since the old days ( java 1.2 ) that i used to work with, and the fact that it runs under linux is a huge plus, so i am trying to decide is the learning curve, worth the price ?
so given the situation above what would you recommended?
Thanks,
Amir

JIRA is issue and bug tracking software; it can function with any development environment, so it has no bearing on your choice of development platform.
If this is an important project or has time or budget constraints, use the platform you are familiar with that works for you.
If you have the time and inclination to learn a new platform, there is certainly merit in that. More importantly though, who will maintain this when you are not around? Will it be deployed to an environment that is already .NET-centric?
Few apps are deployed in a vacuum (unless you work for NASA), so consider all of the peopleware issues as well as the technical ones.

If .Net is what you're used to and the only real advantage you care about in JSP is that it runs on Linux why not take a look at Mono?
http://www.mono-project.com/ASP.NET

Ya jira is in jsp and is a magnificent tool. But its not like you could not have developed something similar in ASP.NET.
Personally, i always go with a technology that i am confortable in. In a professional environment we have to deal with several other factors like time, teams knowledge in various technologies, deployment and maintainence.
you should concentrate on your core tech and do it in ASP.NET as you havent done anything in java before.

Related

Web Development further direction

Hi guys looking for some guidance, i have a knowledge of xhtml, css, javascript, php generated from education. But where do i go from here to reach an industrial standard? for example using those 4 languages, i have used notepad++ to write them. I'm particularly focusing on web development here.
What softwares should gain experience of?
for example where i work i looked at the intranet homepage source and i couldn't read it, i imagine it was autogenerated code, a great deal of it was javascript. I'm particularly focusing on web development here.
Where can i learn about building a website generated from a database? (which i've heard mentioned but dont know how to do) which i belive site like imdb are.
Also i was asked in an interview about Java web development and .NET web development. What does this encompass? .NET is the windows framework from what i've researched.
Any help would be fantastic, i'm just really confused and would love some clarification!
Your best bet from here is to get yourself into a junior role somewhere you can learn a development stack. You've mentioned PHP, Java and .NET in your post - it's time to get a job somewhere you can learn how to do it commercially.
If you don't fancy getting a job (this is the best option as someone can actually show you how to do things) then you'll need people to recommend you a good book that takes you right from the beginning. Any book that combines PHP and MySQL is good starting place if you want to write a website that stores data in a database - with the benefit of being able to play with all of these things for free while you are learning.
Notepad++ is great for developing at home, but if you want to do things really well, you'll need to quality IDE. Jetbrains have PHP Storm, which is a fully featured PHP development studio. Microsoft offer Visual Studio (including a free express edition) for developing .NET and there are also tons of options for developing Java, such as Eclipse.
Lots of people are going to start recommending one technology over another - but ignore any advice that seems to be too extremist as it won't benefit you. I am developing in all three technology stacks and wouldn't recommend one above another - they all have their place. Choose the language that feels right to you and when you've more confident you'll find that switching to other languages is reasonably easy.
What kind of job do you seek? Do you want to be a designer of front ends or a developer that can build layers in the front end, business layer and backend?
You say you know PHP, but dont know how to generate pages from the database. There are many articles on the internet about PHP and using databases (for example the MySQL database). You will have to learn more about scripting/programming in PHP and you need to learn about databases (designing tables, SQL, etc). Learn by reading alot and practising with it (build simple dynamic web-sites). I recommend to buy a good book on these topics.
From there you can learn a lot more about both PHP and databases. For example you can learn about advanced IDE's (editors), version control, performance optimization, advanced web interfaces with AJAX, etc..
Java and .NET are both programming environments. They can be used to built web-applications or desktop user interfaces, but that's only a small part of it. If you want to start with these you will have to learn about topics such as object oriented programming.

Playframework and Django

I have worked with Django before and have recently seen the Play framework.
Is this the Java community's answer to Django? Any experiences with it? Any performance comparisons with other Java web frameworks?
Edit:Almost similar to this question, the responses, unfortunately don't say much about the framework.
Play! is a breath of fresh air into Java and bypasses all the Enterprise cruft that has evolved over the years. Even the namespace is just play not com.playframework. It is supposed to be an answer to Rails, Django etc and is MVC based. It is needed for Java to stay relevant in all but deep entrenched enterprise shops.
Play! reduces the overabstraction and painful configuration of old Java. It is a complete stack it does not rely or play to the old Servlet/EJB methodology like Restlet tried to do (making REST easier in Servlets). Play! is a great REST based Java framework that is a valid contender to other platforms MVC frameworks.
It is very RESTful and it is easy to bind a parameter to a java method. They have also made JPA much easier to use through their play namespace.
play.db.jpa.Model
public void messages(int page) {
User connectedUser = User.find("byEmail", connected());
List<Message> messages = Message.find(
"user = ? and read = false order by date desc",
connectedUser
).from(page * 10).fetch(10);
render(connectedUser, messages);
}
Python is used for scripting instead of builds with Maven which might save a few lives.
I haven't been this excited about a Java framework since Red5 or Restlet. A bonus is they have easy ways to get your app up on Google AppEngine as well using the Java version of GAE.
I have been using Play! now for a few months and in fact have come to love the framework. I struggled with Rails and Django a bit, mostly because I am really not a fan of dynamically-typed languages; however, there was never a really good web development framework for Java to compete with these. In terms of productivity, Rails and Django were the leaders for the MVC arms race that was going on. Play! is awesome, it's concise, scalable, powerful, and it has a great community that is growing all the time. If you're still really into using a language like a Python or Ruby, you can use Play! with Scala too. I am really trying to get into Scala right now because I think it has a great future and it's a lot of fun to use. Anyway, I would recommend giving it a try!
The Play! framework is a really good piece of software, and that the JavaEE bloated environment should be inspired from.
I moved from Java -> Django because of the fast cycle "modify file" / "reload browser", and the Play! framework makes me came back to my favorite Java language.
It could also be compared in some terms to what Grails and in general dynamic languages in Java (Groovy is used in Play!) are trying to import: simplicity, speed and reliability.
I am also a Django user. I've just visited the Play framework and skim thorugh its documentation. It has the simplistic design Django has been known of. It even has app engine support built-in. I'm sure many java developers will support it, and it only need some time to see cool plugins from the community.
We recently started using Play for building a webservice for various mobile applications. I come from a Java environment. I can tell you that the learning curve isn't all that steep--literally in an hour I had the webservice running with basic API already. One week later we were on Amazon Web Services. I definitely see a future for Play as it simplifies web development for Java developers.
Couple of things that I noticed however (asset versioning, etc.) still are not built into the framework, but i'm sure they'll be there in time. I would say it is definitely worth a shot using Play.
I come from a very strong java background. So my answer here could be a little biased.
Play finally brings to the java community what django has been for all these years in the python community, but just a way better.
Play is built on the jvm therefore inheritance all the goodies from a solid platform that has been proving over the years to be the most reliable and scalable one that allows to write and run applications at scale.
I want to say that I did try django. Its popularity among the web community made me curios and I wanted to give it a try.
Strangely I did not find it as easy to use as I had expected.
So many configurations. Too may libraries doing the same thing and often not play very well with each other. A way too much magic.
Furthermore, not having type safety makes very hard to manage and maintain
web application at big scale.
Don't get me wrong, I am pretty sure that people managed to do it, but in my experience I still find java/scala best suited for this, especially when you share the code base with a lot of other developers.
IDE support for Java it is unbeatable. If you implement TDD you will find yourself refactoring code and moving things around on the daily basis. And java IDEs give you all this power. With type safety and more.
My take away is that as long as you find yourself writing a simple CRUD application/prototype/toy without even thinking too much of advanced features and big scale then you can probably find some advantages on using python/django. Otherwise the whole java ecosystem wins hands down. And play is the cherry on top.

Non-Windows RAD Web development

I have spent most of my web-development career in the Microsoft camp, but for different reasons I am trying to look at options.
Some years back I did a bit of Java/Struts development in eclipse, which was nice for its time but my memories of it are not close to what Visual Studio delivers today.
Some of the strengths of the MS stack as I see it are:
Ease of use. Free tools (express
editions), easy to set up, easy to deploy, loads of components and
support, even for cutting edge
features like ajax and jQuery.
Intellisense, so that the API
reference is there as you need it.
Size of the community. Things like www.asp.net,
with the free video tutorials,
samples, documentation etc. Free,
official and reliably updated
information from MSDN.
Enterprise scalable and decent
performance.
Fully object-oriented, (semi)compiled
languages, allowing for sound design,
patterns and practices.
There are of course weaknesses as well, like:
Pricing, once you go live with
anything semi-serious.
Vendor lock-in.
Total lack of cross-platform support.
I have spent some time this evening trying to get a grip on how things are outside of the microsoft world, and
I have found loads of PHP frameworks, Ruby on Rails and relatives, several Java frameworks and a few very odd alternatives.
Some of these seem very interesting, so I would like to hear from actual developers using the different frameworks, and try to find out how they compare to what MS has at the moment.
Which framework are you using, why is it great, what could be better and what kind of sites have you built using it?
Jeff & co made most of Stack Overflow in a few months using ASP.NET MVC. If you had to do the same using a non-MS framework and tools, what would you pick and why?
We have a pretty heavy investment in the Microsoft framework at the office and so I'm mostly doing ASP.NET MVC stuff now. If I were to pick an alternative at this point, I'd probably go with RubyOnRails. It has a very clean MVC implementation -- playing around with it made it pretty easy to get started with ASP.NET MVC when it came along. There's also a lot going on with improving testability -- particularly natural language-like testing frameworks coming out of the RoR camp with Cucumber, et. al. All the investment in testing makes TDD/BDD much more natural in that framework.
If I wanted to go opensource I would go with:
RAD web development: tomcat running Railo, a Java based open source CFML implementation because CFML is a good RAD tool. Railo performs well, is capable of clustering, is able to be extended through editing the source or adding your own extensions.
DB: MySQL for a DB backend because it performs well and just works.
IDE: - Eclipse + CFEclipse because that is what's available, although I want some improvements. Since CFML is a dynamic language you don't have Intellisense, just context help for the api.
OS: Any opensource unix based OS. Probably Ubuntu.
MVC Frameworks: Mach-II or Model-Glue because I'm familiar with them, although I'm open to checking out ColdBox.
I build web apps with:
PHP
Zend Framework
ExtJS toolkit
Aptana IDE
Disadvantages are the typical ones: lack of integration between the tools, weakness of debugging tools, complexity of deployment (although the deployment issue is true for pretty much anything except ASP when you're talking about windows servers).
I'm not too aware of ASP.NET, having only marginal experience with it, but the advantages as I would see them are cross-platform support, cheap hosting ability, architectural control (PHP is more low level, and Zend Framework is easy to buy into one module at a time, so you can more strictly control the behavior of each page).
I am using Django. It is easy to learn, very well documented and most of the brainy stuff happens in Python (assuming you like python). I develop all my HTML and CSS by hand using Aptana - gives better control but has nice helpful features.
Using many IDEs / editors you can get auto-complete based on the Django code-base (Netbeans, PyScripter, Komodo). You can then host on either Windows or Unix (Linux, Solaris, Mac).

Java in a Microsoft shop

I've been introduced to this wonderful project, xhtmlrenderer; the flying saucer project. Problem is, is that where I work, it's strictly a microsoft shop and I haven't done any java development since college, and a smidge of WebSphere a few years back.
I was wondering what it takes these days to do java development? I set up a quick proof of concept to see if I could do what I wanted with this project and it works great, however, I used jnbridge whose licenses are a bit on the expensive side but Visual Studio was what I had handy and got the job done with an hour of finagling.
I'm wondering what it take to do java development these days? Are servlets still the norm? Is Apache where I should start looking to get a small web server up and running? Is Eclipse/Ganymede the IDE to use?
Essentially what I want to do is pass a url to the service and have it spit back out a PDF. Just on vacation right now, and stuck on dial up, but can't stop thinking about this.
Thought I'd post these thoughts now to see if I can get a jump start on next weeks work.
Eclipse is certainly the IDE on no budget, NetBeans is also free. I prefer IDEA from Intellij, but for something that sounds like such a side part of your project, it probably isn't worth the money.
In terms of servlets, etc., it really depends on the archetecture/scalability you are looking for.
If you are looking for something that needs to run as a small web interface, then something like Jetty or Tomcat with a basic servlet should be fine.
You might be looking at something invoked via the command line, although starting a JVM for every conversion is going to be too heavy for all but the most trivial usages, but a little program that monitors a directory and pulls stuff out of it for the conversion may be what you need.
If you give more details about the archetecture and how you are planing to use it you could get some more specific advice.
In general .NET and Java development are quite similar (.NET was started to compete directly with Java, after all), but the real practical difference is that a lot of the .NET environment is kind of provided to you on a silver platter. You need a web container, you have IIS, you need a database, you have MS-SQL, You need an IDE, you have Visual Studio, etc., etc. In Java development, these are all choices to be made, there isn't really a default obvious good choice for a lot of things - there are many competitors. That can create a larger curve for a Microsoft shop than you are expecting.
Java's not all that different, although generics add some excitement; PDF with iText is fairly straightforward; and the IDE world is pretty much the same as ever. Eclipse and Netbeans are common, there are several others, and real programmers still use EMACS.
Apache is pretty generic, but with servlets in mind you might think about Tomcat.
If you want a small enough web server, you can always use an embedded Jetty. If you need the full services of Tomcat, it's also available. For Java development, I use Eclipse for an IDE. Not only is it free, but its support of refactoring is ahead of Visual Studio. Actually, if you used the WebSphere development environment, then Eclipse will be very familiar.
Consider sneaking in IKVM (http://www.ikvm.net/) as it allows you to use Java components in a .NET environment.

What language / platform would you use for a shareware / freeware desktop application?

I have a DVD cataloging application that I wrote a few years ago with MFC. Records are saved in a sqlite database, so basically it's a CRUD app. UI-wise, it has a tree view on the left, a list view (grid) on the top right, and an HTML view (embedded IE) on the bottom right. Nothing fancy.
I wanted to update the app with more features, but I've been using Java EE for the past couple of years and I realized that I wasn't productive at all with MFC. So I'm thinking maybe I should use something else to boost my productivity. Cross-platform would be a big bonus, but it's not absolutely required.
Here are the options based on my research:
Java / Swing: I can utilize my Java knowledge; great third party libraries (such as Spring for IoC and Hibernate for ORM); cross-platform. Downside is, JRE required for users; Swing seems to be in the "maintanence" mode and it's not getting much attention from Sun.
C++ / Qt: native application;
cross-platform. But I'm new to Qt so
I have to learn it first.
C# / WPF: WPF seems to be the future
of Windows GUI development and I'm
impressed by some WPF sample apps. I
have some experience with C# but I
need learn WPF. Downside is, Windows
only; .NET 3.5 runtime required.
So what would you use if you were in my situation? Thanks in advance for any suggestions.
If you want to learn some new skills while developing this application, then C# / WPF, and LINQ in C# 3.0 is really great if you didn't have it in Java.
If you just want to get on speed, then you already answer your own question, Java / Swing. It is what you are good at.
I'm actually a big C# fan, but since you said that cross-platform would be a huge bonus, I think that Qt might actually be better for that. C# can be cross-platform via Mono, but I've had better results with Qt in that respect. They also have real good documentation in QtAssistant to get you started.
Consider PyQt + Python as well if your productivity is a big issue. Trust me when I say the learning curve for Qt is well worth it, and not as hard as it may seem at first.
Sqlite support is in both the Python standard libraries and the QSql module in Qt if you prefer to use that.
PyQt + Python is a cross-platform option as well, since Python is available for many platforms and Qt's cross-platform to begin with.
The controls you mentioned you used in your application are all available in Qt.
The only other tool apart from raw C++ is Delphi. Period.
With other tools you will have problems in the deployment.
With Delphi you will produce native exes, self-contained. Also, the database connectivity is great.
You never will be dissapointed by lack of controls or 3d party tools, a lot with source code and with free/commercial toolset.
And the compiling times are the fastest in this galaxy ;)
So, if you are serious in provide no-hasle app for your customers, and that customers are not tech-oriented like developers so could be confused because which one of the 4 .NET runtimes install, want minimal support, easy downloads, click-click-install-go, apps that work instanly like Skype,TopStyle (made with Delphi) and others,then Delphi/C++ is are your only option. Seriously. The ONLY options.
If you want a cross-plataform solution, then FreePascal/Lazarus could work if your GUI is minimalist.
In most cases, as long as the scope of the project is reasonably small, and the computational needs are modest, I tend to favor using TCL/Tk. I have not yet learned a gui api in which I'm more productive than tk (not to say that there isn't one, just that I've tried several and found them slower). TCL is not the most wonderful language to program in, to be sure, although there are a number of add-ons that help a lot, specifically [incr tcl] and tcllib.
The reason I choose this instead of other systems, I prefer coding in python, for instance, is because deployment with tcl/tk is close to unbeatable. With Starkit, you end up with a single file double clickable application that requires no installer, and is trivially portable.
Well if you really want a class platform type of application, I would convert it into a web application and host it. That way if one user uploads dvd information or a dvd cover picture another user could take advantage of that information already input into the system.
If your going to develop for the desktop try to make feel like its an application made for that platform by utilizing the OS UI tools. And for windows, pick your 3rd option C# /WPF.
If you have some non UI code in your MFC app that you would like to reuse then consider QT. Otherwise pick whatever you prefer to learn.
Instead of C#/WPF you could give Silverlight a look. You app seems simple enough that it would not take a lot to get up and running. Similar to the demos that are shown off at conferences.
Once you get the basics down it will be fairly easy to add some cool features like animations, movie clips, album art, coverflow like interface etc.
You will be able to target Windows/Mac users and possibly Linux with Moonlight. But I haven't looked at Linux in the past 8 years so I really can't say much about it.
With Eclipse RCP, you get Java, cross-platform development (see Delta Pack), native look (via SWT) and a great framework collection for desktop development (declarative UI, plugin management etc.). You should definitely give that a try.
I went the C++/wxWidgets (but you could do Qt) route a few months back when presented with almost the exact same scenario (upgrade an app with a SQLite db). wxWidgets was fairly easy to pick up, had everything I needed, and was way easier than MFC. The best part was I found a good C++ wrapper for SQLite on CodeProject (e.g., CPPSQLite) and had the whole thing up an running in no time... The project sold me on wxWidgetss, in case you couldn't tell.
I would actually look very closely at something like adobe air. It is cross platform and can be html/javascript based so chances are you won't have a heck of a lot to learn except maybe a javascript library or two. It has the ability to talk to a local datastore or over the interweb to a webservice or RESTFUL service. Development is free with aptana. Check out some of the stuff written in it:
http://www.adobe.com/products/air/showcase/

Categories