I was surprised to log in and see some page views. Maybe some were from me or maybe someone stumbled upon the page. If so, that's cool. If not, you know I've said before this blog does the most good for me. It helps me organize my thoughts and keep up with things. So if you're reading this... cool :)
This is a long needed update. A lot has changed. As you can see its been a while and my journey has taken a pretty unexpected detour from what I had previously been documenting.
When this blog started back in April of 2014, I had purchased a few C# books and enthusiastically talked about how I was going to follow my plans through to becoming a programmer. The focus was very strict. C#, ASP.NET MVC, Javascript.
Along the lines there was a switch. I spend a lot of time searching the web and watching YouTube videos. Any self learning technologist would course. And I began to come across websites like Coursera and Udemy. I searched for different types of programming courses and was watching computer science courses on YouTube to supplement my knowledge and everything was in Java. Pretty much all the CS courses and the majority of Udemy and Coursera used Java or Ruby as the preferred language. Of course I can understand this. These are cross platform open source products that can be ran on both Windows and Unix systems. C# .. seemed more of a specific area type deal. Either you were developing for the Microsoft platform .. or your'e not. And that kinda got me thinking. I began to see all of these amazing frameworks. Project after project and community after community. I had never seen so many creative things. Yes there is a lot you can do with the .NET framework... but at the same time ... is there? I mean .. not to the extent of what there is for Javascript and Java. I fiddled with basic tutorials and watched some of the lectures and of course having been programming in C# for about five months .. Java came naturally. Well of course it did ... everything I had been using in the .NET framework. .. it all came from somewhere. What is the original de facto standard of the web? Who was the first to put portable and accessible object oriented programming anywhere on any platform .. who created the basis and set the precedent for so many other projects and languages that came before it? C, silly! But no I'm not talking about C here....Java. The answer is Java. What I had understood about Java before was that it was this older language (barely older than Javascript) that was really popular back in the day but was fading out and many said it was dead for the enterprise all together .. and really I had pictured it as this .. basically old language who set the bar back in the 90's but had been replaced by .NET and there were 100 other ways to do anything you wanted without Java.
Seems I was wrong
When looking through all of this and still pretty immersed in C# .. I wanted to build an Android application. It looked really appealing to me, I loved Android, and it was something new just to do a brief experiment with. Well I had Xamarin studio (free version) sitting on my taskbar and I could have used that to build a small app. .. but then came across multiple Android courses on Coursera and Udemy and even YouTube .. and thought why use Xamarin? Oh well...what was so bad about Java anyway? The syntax is so familiar to many other languages I thought .. so I might as well give it a try. I got a book for Android and some Hello World tutorial videos from YouTube. The best of these is here. And I downloaded the Eclipse based ADT and took it away.
It was fun..
So I did more research and made a few more Java programs and realized that it wasn't some monster and was thinking that this was pretty cool. But then the really big topic came up .. and with this topic is probably where a lot of the negativity and notorious reputation of complexity came from .. Web Applications.
Yes .. now here is where I would see Java just not kicking it anymore. I had read the horror stories of Java EE and saw how you had to filter through a myriad of tools, which all have different configuration, and then finally get a server up and running, parse through one million lines of XML and do something with beans? Wasn't too sure about that - and then finally Voila! A Java EE web application!
yeah yeah .. so I watched a few videos and experimented with Servlets and JSP and then started thinking .. yeah I can see how this was pretty good back in the day and it made a lot of things possible .. and I'm sure many are still using this technology today .. but its' just too verbose. I mean .. we have better options. One you could just skip out on this server nonsense and go full blown Javascript if you wanted .. but lets say that wasn't the case then anything could have been easier than this. Particularly what I had in mind was Ruby on Rails and ASP.NET .. These two technologies I was pretty sure at the time ruled the world. If it was a modern, responsive, data oriented enterprise web application .. then the world had to be running either Ruby on Rails or ASP.NET
You have to understand .. before doing all this research .. I came to realize that I thought .NET was THE biggest thing in web development. I thought the world ran on .NET and that this was as good as it gets.
Again ... so damn far from the truth. What I found was shocking.
** I was going to input a bunch of charts and numbers here but I got lazy .. so just take my word for it .. java is everywhere**
Well so now at this point I watched a course on Pluralsight called Java Web Fundamentals and saw kind of the general Servlet/JSP relationship worked. After knowing more about Java and that it is still a useful and viable language I had of course said that it would be worth learning. I would be encountering it more in school and online and of course it wouldn't hurt to have another tool in my arsenal. So things didn't really get going until this point.
I wanted to look at the things I was currently working on with .NET and find the Java alternative and compare how things in worked in these two different eco systems. Well, surely there had to be an MVC approach to developing Java web applications.
Surely there was ... I found many.
Spring MVC ... lets start here.
Upon looking around I came across the Spring framework. The Spring framework is a mature platform for Java enterprise applications. In general it appeared to be an IOC service but then found out that the platform has many things to offer. Since at that time I was doing ASP.NET MVC development I thought that I would check out Spring MVC. I looked it up and got more familiar with the Spring framework and saw how things went together. I found a lot of things that I liked and things that I thought resembled ASP.NET MVC very much so. Still .. it really wasn't the icing on the cake. It looked like a very capable and mature MVC framework .. but alas .. we're coming to the best part about the Java platform
Options.
There are so many options and different things to do within this ecosystem and Spring wasn't the only player in town.
Since this point I started studying and researching various technologies like the Google Web Toolkit, Vaadin, Wicket, Struts 2, Spring MVC and more.
Here is a comprehensive list and comparison of the major Java web frameworks and could help you make a decision based on what you're looking for.
Here
So Spring MVC was fine and dandy .. more or less I was comparing it to ASP.NET and what I could expect using the platform. There was still a good bit of XML and it did seem to be a pretty viable and sturdy solution for large enterprise apps .. but I was looking for something different. Where was the easy framework that allowed me to click a button and get up and running?
Let me explain that a bit..
So what I really like about the .NET framework is that when working with ONE vendor, ONE IDE, ONE platform .. you can expect ultimate compatibility and productivity. If you open up Visual Studio 2013 right now and create a new web application, VS will bootstrap a fully functioning, RESTful, and responsive web application to scaffold up and get working with .. and then with one more click you can instantly deploy it to Azure and have it running online. I really liked this ease of use and "point and click" mentality. I was getting frustrated with this when discovering Java alternatives because noting appeared to me to be that out of the box and standard. One of the downsides to having so much freedom and so many options is that not everything stays the same overtime and there is many ways to just setting up a project .. there are tons of cloud services like Heroku and Cloud Foundry to work with and there are even different tools for building the application structure .. for instace, Maven and Gradle. There are also different IDE's like Eclipse and IntelliJ ... so when following along with tutorials a lot of times things wouldn't work for me right out of the box because usually there were dependency problems, out of date packages, and different IDE settings that I would have to filter through to finally get working. I was kinda losing hope on productivity ... until I discovered a few more things.
The Play! 2 framework.
Now .. I ended up with Play! 2 after watching an outstanding video. This was what I was searching for! Hell, this wasn't comparable to ASP.NET MVC .. it was better! I was able to get an application up and running ... no Tomcat configuration .. the server was built in .. it was fast... I was able to get a sample app up and running and I was really having fun. I watched a course on Play! and decided to not learn Scala but go with Java .. things were going well with this but I didn't really stick with it.
After messing around with more stuff and doing more research I of course was coming to a few conclusions.
Everything I was in awe with the .NET framework was just technologies from Microsoft to solve problems that had already been in existence. I thought that everything like WPF and ASP.NET MVC was revolutionary .. no this was just the Microsoft version of it. There was a domain of choice between everything with Java and Microsoft. So now my eyes are opening up and I am realizing that that Microsoft doesn't run everything and there are many options. If I want to develop a desktop application I can use JavaFX .. or WPF. If I wanted to develop an MVC application... you could use ASP.NET or you could use Spring MVC .. I realized honestly .. that Java had already done this first. Upon research I'm basically seeing Microsofts attempt to throw a technology into every domain that had already been done. Like they were catching up to speed. Basically what I'm saying here is that there were many options to do everything you can do with the .NET framework long before Microsoft came around.
So that's what did it .. why am I using the .NET framework? Yes, it's good to know because it's in demand .. but am I limiting myself here? I kinda felt that way. And instead of making this strict lesson plan and learning every MS technology and then getting my web development certifications for Microsoft I decided that it was ok to play around with a different technology often and leave your comfort zone. I would in fact recommend it.
So back to the point ... I have realized yet another thing. The Java language had been called old and had many critics that were quick to say that it was lacking modern features and that C# was way ahead. Java means both a platform and language. The Java language isn't the most advanced language ...it doesn't have every single feature that every other language in the world has .. but it doesn't have to. Because I saw the real reason that this was worth pursuing. It wasn't really about Java as a language at all .. it was the JVM! This was what was making so many things possible. The JVM to this day is still a revolutionary eco system filled with many capabilities that has helped us shape the world we live in today. It gives architects so many options and freedoms when wanting to create something of their own liking that they can use with the versatility and sheer power of the JVM. You can be on the JVM and never write a single line of Java code. ... ladies and gentlemen you can't do this with the .NET framework! This is where comparing things ends. Maybe these two technologies aren't so identical. I'm discovering that this is a community that I want to be a part of. I like the JVM and think that there are many possibilities for more advanced frameworks in the future. I think "making the switch" is definitely well worth my time. Scala, Groovy, Clojure, JRuby.. these are huge projects and entirely new languages that can be implemented on a familiar, stable, and pre existing platform. Working with the JVM gives a developer, particularly a web developer, more choices and powerful options than I've ever seen with any other language or framework. Now one of the languages listed above is the topic in which this article is going to be closed. Groovy is changing things. Groovy has given Java developers the ability to write dymanic, concise, powerful and expressive code for the JVM while using a syntax like Ruby. Groovy really is the turning point for Java in my opinion. This is my preferred way to write programs for the JVM and is where I am attributing most of my time outside of work. Groovy gives the Java platform modern features, powerful and productive performance, and a new way to think about the future and capabilities of the Java platform.
Why Groovy .......... one word...
Grails
This is it ladies and gentlemen. The reason for this post.The reason for this update. And the reason for me no longer caring to write applications for ASP.NET MVC. Grails is the king of Java web development .. and truly may be the best decision for your next project. The only reason I say may is because of course to use Grails you already need to be in a Java environment. If you're using Ruby or .NET or PHP then this really doesn't matter. But Grails ... has changed the way we look at Java Enterprise Application development. Finally I found something powerfully expressive and easy to set up. Scaffolding, built in ORM, RESTful capabilities that far surpass that of .NET. ... This really was what I was looking for. I plan on putting a lot of time into learning this platform and becoming very proficient with the Groovy language. I like it better than ASP.NET. I think its more powerful and capable than ASP.NET .. the Groovy language beats even working with C#. .NET doesn't have a way to give developers Ruby like productivity plus keeping the power of the platform. I advise you to try it out and see how nice it is to cut out all of the fluff and really focus on expressively creating applications. I think that Grails has created a new future for Java web development and there isn't a reason to validly look at Java as some outdated web app technology that we have better opportunities for. The freedom to make these new technologies like Play! and Grails is really why I think an open community and technology is the best idea. That is what you don't get with .NET. Java web development isn't some pre historic history lesson. The JVM is modern, it is powerful, it is fun, and it is still the dominating force in application development today. I am excited to see where this goes and am happy in making my decision to learn this framework. I think we have something very good on our hands. So this is the official update that I promised to give. Why if you start following me online now you're going to see Java things instead of .NET things. This is the reason for it. Same goes professionally too. I am currently working as a Linux administrator and I am loving it. I love open source, I love Linux, I love this field and wouldn't have it any other way. I still plan on making a full time career out of development and I am still actively pursuing this as well as school. As far as a development job goes .. Java will be what I look for. I don't hate .NET and I would still work with it of course. But Java is the technology that, moving forward, I'd like to spend most of my time mastering both in and outside of the workplace.
So still working and learning as always and am counting the days until that beloved "I am now officially a Software Developer!" blog post comes through.
My life. My technology. My journey.
I'm having fun and I sure hope you are too. Because there really is no better place to be than learning, growing, and building our world together.
Happy Coding. Happy Living.
No comments:
Post a Comment