Thoughts On the State of Web Development
rmoskal recommends his blog post up at Most Media on finding the right level of abstraction, Grails, and SOFEA. "[Three years ago] I was very excited about Apache Wicket as the way to develop line of business applications with a domain model, CRUD [create-read-update-delete] screens for maintaining the model, and in the most interesting cases, doing something else useful besides. I still like Wicket. It has, as its website says, a small conceptual surface area.' It reminds me of Python in that 'You try something it usually just works.' In many respects, though, Wicket seems to be at the wrong level of abstraction for the for the sorts of line-of-business applications described above. If your team is spending any time at all writing code to produce listing, filtering, and sorting behavior, not to mention creating CRUD screens and the back-end logic for these operations, they are probably working at the wrong level of abstraction. ... Recently I did a small project using Grails and was quite pleased. Grails uses groovy, a dynamic language compatible with Java, and is based on the proven technologies that I know and love well: Spring, Hibernate, SiteMesh, Maven, etc. ... I get all the power of the Java ecosystem without the fustiness and lack of expressivity of the core language (no more getters and setters, ever!)."
First, getters/setters are generated by your IDE of-course, so you never have to write them by hand, however, more to the point, I have avoided many various parts of the 'Java ecosystem', while still using that language to do all sorts of development and really, you don't have to use getters/setters. I use many Java classes as simple data structures, just like C-Gods intended, no getters or setters there, just public or protected fields.
You can't handle the truth.
This isn't really about web development in general but Java web development and writing getters / setters is the IDE's job.
Using Java for web development is like using a wrecking ball to hammer in a nail. Use something that fits the job better, like Zend Framework, Django or Ruby on Rails. In web development, time to market is everything. Build your application and hopefully you get a large user base. Then when performance is an issue, you should already be working on a rewrite that can incorporate something like Java on the backend.
As I've said before on slashdot, the open-source movement should look at creating a new GUI browser that does desktop-like and CRUD GUI's well. Forcing the e-brochure-like HTML-based browsers to act like desktop/CRUD GUI's is like trying to roll Pluto up Mt. Everest: people have kept trying to pull it off with AJAX and whatnot for more than a decade, but it's still kludgy, bloated, buggy, security-challenged, and version-sensitive.
It's time to throw in the towel and start a new tool and markup language.
Table-ized A.I.
Scala gives you most of the same benefits of groovy with the addition to being statically typed. The lift web framework is very nice (albeit poorly documented), especially with its ability to generate pain-free AJAX/Comet for you.
ps I would hardly call this article "the state of web developement." Maybe "the state of Java ecosystem web development", but even that seems a bit of a stretch.
I never understood the love with getters and setters, it would be so nice to only have to create getters and setters if you want to override default get and set behavior, like for setting lists I like to check if its not null first, but why do I have to create getters and setters for all my variables all the time, seems like a waste to me.
Only Perl is true!
Futurist Traditionalism
Title of summary is wrong, its not about web development.
What is the purpose of this? Don't we want to go away from Java in web? It was slow back in the days, now its just yet another security risk that can compromise ALL browsers at once if Oracle/Sun screws up. And now some spin-off or whatever? No thanks.
What we really need is some kind of consistency between output of HTML/JS engines, as well as CSS, so that GUI "just works". There is nothing wrong with those languages/markups, just with the implementation. While I'm all for competition and browsers trying to be better at something from others, it seems to me that in this area they just should cooperate more. It was IE6 back in the days, now its all over the place with vendor-specific extensions, that instead of going first thru W3C, they just are added to the browser with -moz/-webkit/-whatever thats supposed to make it okay to do this? Or perhaps they want to take approach "Hey, we implemented X and its popular, can we force this into W3C now?", with I hope won't work very well for them.
I began my Web Development career with PHP/ASP. Then, I moved to ASP.NET - sometime in between then, I learned CSS, Flash, and XML.
I continued building enterprise-level, data driven Websites with ASP.NET, until I couldn't stand supporting the closed-source ecosystem that is .NET anymore.
So, I moved onto Java-based frameworks, meaning; JSP, JSF, Apache Click, Apache Wicket, Tapestry, SEAM, GWT. Each one fell short it its own way - never coming close to the power, flexibility, and speed of development as ASP.NET.
Then, I found Rails. I am absolutely amazed at what I can accomplish with Rails, and the ecosystem it offers. I don't have to deal with hundreds of jars or dlls like in Java/.NET - I just install a gem with Ruby's handy little RubyGems. AJAX is baked right in, with tight integration around every corner. ORM is also built in, and migrations are just plain magical. If you're like me, and you still want the power and enterprise-loving ecosystem of Java, just run your app on JRuby. If that's not enough, the community is always willing to help - no matter how stupid your question.
Take it from someone who's given everybody a shot - Rails Rocks
IMHO, programming language wars are silly. The proof of the pudding is in what you can achieve with the framework of choice. After many years of observing the competitors to J2EE, I have yet to see a professional grade alternative to it.
There is no such thing as luck. Luck is nothing but an absence of bad luck.
Or is web development just too difficult?
Seems that you should be able to just describe what you want at a high conceptual level and all the code bits just be generated, allowing you to replicate your business rules at all the right places.
Is it going to always be the case that "web developers" need to know more about the act of interacting with the "web programming infrastructure" than they do about the problem domain?
If your team is spending any time at all writing code to produce listing, filtering, and sorting behavior, not to mention creating CRUD screens and the back end logic for these operations, they are probably working at the wrong level of abstraction.
Agreed, BUT: I expect more from me, than the average developer. I expect to be at the very top. One of the best in the world. (Yes, that doesn’t mean I am always. ^^)
So none of the present libraries are even remotely acceptable to me. The one does one thing good, and the other one does the other thing good. But basically they are more of a “framework” mess, than a set of simple, separated libraries.
Which is why I did actually spend a lot of time on the above things. To custom-build my own system.
I think generating SQL from a UI design, is the wrong way around. So my system generates a UI from the database definition code. A bit like rails, but with a graph as the basic model of site structure, instead of a flat set with hacks.
Also, I made a separate library of every aspect of my abstraction toolbox.
Recently I did a small project using Grails and was quite pleased. Grails uses groovy a dynamic language compatible with Java and is based on the proven technologies that I know and love well: Spring, Hibernate, SiteMesh, Maven, etc.
Sorry, but I hate things like Grails or TypoScript with passion. The reason for this is, that their design is based on the inner platform anti-pattern. In a nutshell, the recreate the environment they’re implemented in... badly. PHP and Java (in JSP form) already are dynamic scripting languages made for this task. Just use these, save a layer, lose nothing, and gain a massive performance boost for free. And: No. Grails and TypoScript are not easier to use. They are usually only easy, when you don’t want to do anything special. But usually, in my experience, there is no such thing as a project without something special. And on top, you have to learn new things in addition to the language you’re already using. It is silly.
I get all the power of the Java ecosystem without the fustiness and lack of expressivity of the core language (no more getters and setters, ever!
No you don’t get all the power. You get another pointless layer of abstraction. And if you want expressivity, then why start out with Java in the first place.
My rule of thumb is: If you are using a compiler, it must result in machine code. If you are using an interpreter, it must be in machine code. Prefer compilers over interpreters, and always only use one single compiler xor interpreter between your code and the machine. If you have more than that, you’re doing it wrong.
Which is, why my above system is not written in a scripting language, but mostly in Haskell and Python, with some Python scripts for quick code generation from the SQL model plus some annotations. The result is always compiled code. The result is always compilable to a normal GUI, web service or mobile device application.
But I’m in the process of phasing the whole thing out. It lacks in themeability (an issue, if your whole UI is generated automatically), and I want to write an even more generalized system. And this time I want to open-source it. :)
But you may not like it, as it will most likely not be usable from withing a browser. There are just too many efficiency and security issues with that. Also I nearly stopped doing webdev anyway. Too weak. I need a bigger challenge!
Any sufficiently advanced intelligence is indistinguishable from stupidity.
Sooner or later ANY client small or large, will come up with a 'change' that will require going way down the level to the underlying language, because of the intricate and out of the ordinary way they will ask it.
moreover, rarely will the two changes requested in similar area by two different clients will be the same. every business has their own style of running things, and what they will ask of you will differ from each other. this is even valid for small ecommerce presences on the web. you cant imagine the number and variety of different stuff they may ask.
there has been a lot of framework talk and numerous frameworks put out up til this date, yet the biggest and strongest ecommerce software and community remains oscommerce, despite its aging code (no templating, html mingled with php and so on). clients who start with even different software (leave aside frameworks) eventually move on to oscommerce due to unequaled community support. (innumerable modules, modifications available for free, all the service providers - any payment, shipping provider - know and support it and have modules for it, very cheap development fees and so on).
the disparage in between the success of software like oscommerce and any such hyped framework that has been put out so far shows that, as developers and programmers, we shouldnt close in on ourselves and go about being above all, and programming for ourselves instead of end users. it just ends up in elitism, detached from the reality.
Read radical news here
Are the client-side data validations declarative or do you still have to use Javascript to make them happen?
We've had this platform for years. It's called Qt. It's free, it's open source, and it runs just about everywhere, on just about any OS.
It even includes numerous classes to make network-aware application development damn easy. It's much easier than performing AJAX requests and handling their responses, for sure.
Best of all, it is written in C++, a proven, well-supported language that performs very well in most circumstances, and is suitable for large-scale development. It's a lot better than that hack they call JavaScript, which starts becoming unmaintainable once you go beyond writing an onclick handler.
It didn't take that many years to go from 0 users of HTML to where we are today despite the fact that most people didn't understand the potential at the time.
Or perhaps there could be two protocols available - one to support legacy sites and a new one specifically designed to facilitate web applications.
It would be great if you could have the most common AJAX-style transactions be available declaratively so that you could use them with little or no client-side scripting
Really, try it. You can leverage many existing Java-centric frameworks. Sitemesh, Spring and Hibernate are fast & stable. Grails takes the 'suck' out of using them. Rewrites are easier, since you are already 1/2 way to Java. Find the bottle neck, rewrite it in Java and away you go.
Think global, act loco
They took our jobs!
Almost most IT and Web Development jobs have been outsourced to third world nations.
They took our jobs! Duurkee duuuurr!
Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
My approach has been to autogenerate the basic CRUD pages (and business layer), then customise those pages as required. Background infrastructure such as master-pages and css provides the necessary customisation. For the complete, free, open-source toolkit (for .Net and any DBMS), see: picasso.codeplex.com.
"At my job they like you to use getters/setters for everything, even inside the class when accessing private members. To me this is pointless and a waste of time requiring a method call when you really don't need one" - by yabos (719499) on Sunday April 18, @09:48PM (#31891836)
It's what creates the object-oriented encapsulation in effect though, & yes, you lead to this in your next quote: Sad part of it, will be what I am going to illustrate as fact that circumvents that "OOP" encapsulation, no matter how you implement it in usermode / Ring 3/ RPL 3 & it actually furthers your case, in a way:
"I can understand the reason for encapsulation where you want to protect certain things from outside access" - by yabos (719499) on Sunday April 18, @09:48PM (#31891836)
Here's that "sad part" - it wouldn't protect an OOP designed program, protected/private vars & datastructures + getters/setters used, running in std. usermode/RPL 3/Ring 3 program, from a Ring 0/RPL 0 executing device driver (like what you see rootkits using for example...) - think about that one!
Getting it to produce proper results is job #1 though, speed comes last, but solid code design (err traps & all, plus OOP when possible is #1... however, think about what I said above about drivers (they can reach into ANY RPL3/Ring3/Usermode process' memory spaces (yes, even the OS, but it can cause crashes too), anytime + ANYWHERE they want (thus, defeating OOP encapsulation in std. RPL3/Ring 3 apps... & what uses drivers? ROOTKITS DO... for reads? This would be a silent, safer, & non-crash prone way to GET DATA (think espionage))))
So much for OOP &/or/+ encapsulation, eh?
APK
P.S.=> Do I use OOP?? Yes - especially for production code. Sometimes you cannot help it because you call libs OR have to use prebuilt controls &/or structures that use OOP too! To be honest though, I'd rather have usermode code be OOP safer & slower stuff, err traps & all, than an "absolute speedster" (meaning optimized to the Nth level/max) MOST of the time...
However, not when something needs speeding up, & then I either head to a faster language + if possible, put more inlined or procedural code into it rather than classes &/or full blown objects (worst are externalized into libs such as .ocx or .dll in Win32 for instance, for speed @ least, but not reusability) & then good compiler switch optimizations @ most usually then, for gaining speed!
(Lastly, going to "dropping to" character mode/DOS Command Prompt/TTY console mode for even more speed, vs. GUI - 10x gains imo @ least, seen it in C/C++ &/or Delphi in doing so when possible (not all apps lend to it userfriendly wise either though))
That's in usermode end user app oriented GUI (mostly) coding, sometimes I have to do a console mode one for better speed IF the user doesn't mind it (some do bigtime), provided a compiler's IDE can generate a console app that is (not all do that are quick & non-interpreted code by a runtime but statically linked true .exe files that only depend on OS API functions, rather than a runtime)...
I guess what I am saying is, it really depends on the situation @ hand, & its demands for code I write for myself, or for employ/customers + tools they give you to use (yes, companies as I am sure other programmers here will know, DO standardize on tools used, because it saves them monies in licensing them mainly, & I don't blame them that)... apk
I've been using this lately, and it beats the crap out of anything else I've seen. It _feels_ like I'm writing a swing app, but it's ajax enabled without writing javascript.
And since it keeps _all_ the logic (even loops to generate tables or bullets) inside java code, refactoring is trivial. I will never go back to a framework with a separate templating language again (I'm sorry, Django!).
!
In Soviet Russia, articles before post read *you*!
Rails? Been there. Grails? Done that. Both are decent. Rails is very good, but the abuse of open classes gets old quickly. Grails is ok, but it's really just a thin veneer over a complex mix of Java projects, and God help you if you run into any problems, because you'll be dealing with a stack trace that's 1000s of lines long, and you be troubleshooting these underlying complex java libs. For me, the play framework (http://www.playframework.org) is the best Rails-like approach on a Java platform. It stays very close to rails, so if you know rails learning it is easy. It's very pragmatic and very fast. It doesn't require a compile step to see your changes. It just works. Best of all, the code is clean and easy to troubleshoot. I suggest you check it out.
One thing comes to mind when I think of the state of web development today. Web 2.0, and all its AJAX-y goodness has a serious flaw that has manifested itself in at least two sites I can think of who should know better (Slashdot, and Facebook).
Its a flaw that's occurred before, when developers were doing all sorts of stuff to open new windows or tabs to try to keep people in their site.
It's a flaw that targets the basic tennants of the web, its sole reason for existence, and its virtue in simplicity.
The flaw? Leave my browser's back and foward buttons alone. Let them do as they have always been intended - to take me back to a previous page location so I can maintain the context I was in previously. Slashdot violates this with its AJAXy "more stories" crap, so does Facebook. No one seems to be pointing this issue out to any sites who create these silly "Web 2.0" interfaces. And why the hell not?
I'm all for moving forward and improving the UX with AJAX, but don't take away the fundamental elements of a UX in the process. It's quite simple.
Is it just me, or does the author of this story sound like he is in love with making things as complicated as possible and is always using the newest technology because it is the newest and that somehow makes it best? Seriously, who gets "excited" about the tools you use for developing apps?
1. If the app needs that, it can be built without a whole lot of complexity. Abstracting it so that it can just be applied is a lot more complicated and bravo to Java for having that. 2. Single Sign On is not a complicated process. I worked as a J2EE architect and PHP developer for a telcom company a few years back. The java only team implemented their "standards based" single sign on system that was marketed by the J2EE vendor as doing all that and a bag of chips. Took forever to get setup, constantly had issues and was nowhere close to as good as advertised. Eventually the VP came to our little web team of PHP + a specialty guys (J2EE, .NET, and Perl) because our stuff actually worked when we wrote it. We replaced the ENTIRE system with a from scratch SSO solution across 18 different internal and external sites/applications in under 2 weeks. You know why?
Because J2EE talks a big game and has a whole lot of giant books but when it comes time to deliver it comes up short OVER and OVER and OVER again. It's going to be behind schedule, over budget, and under-functional 9/10.
3. Yes. You can.
Do you have any idea how much money corporations throw away on J2EE Application Servers to get that functionality built in? 6 figure numbers minimum.
Do you have any idea how much you need to pay for the annual salary of a good server admin? Usually less than that.
Do you have any idea how much time it will take for a good server admin to set that up for you? 2 weeks to a month so you can use it forever.
Session failover? Really? If you've got a multi-server app running it better darn well failover or you've written a POS app. Again, not that complicated to implement in less than a day.
4. Ah, the dream. It always sounds so good and yet, never really works that way. Great marketing pitch though.
5. Again, sounds good. J2EE app servers are very good for that, however, paid app servers for a lot of other languages will give you detailed trace modes for exactly that reason.
Getting a vendor to support you is a great idea too. It's actually more of a testament to out-sourcing than anything else though. By depending on a vendor to support their application, you're basically just paying to depend on their programming team, documentation, and training processes instead of yours. If you're trying to figure out if it's a server issue or an issue with the application that you've written in house, I hope you've already got the tools available to trace those down.
Finally, all this aside, I was a java guy before. Completely bought into all of the talk about ideal architecture, standards, "enterpriseyness", etc. I literally had the "I can't believe anybody would try to use anything but Java...it solves everything" mindset.
Then I saw it in practice and reality is far from what's spec'd on paper. For one thing, J2EE is serious overkill for 99% of applications and that is very important. When people get into java, they want to do EVERYTHING in Java. This is where most of the "standardize on a language" people come from. If you try to do everything a company needs in java, the company is going to simply hemorrhage money.
Additionally, the beauty of the web is that through web services, REST, and API's everywhere it's easier than ever to use the right tool for the job. J2EE is a swiss army knife. You can hammer a nail with it, but it will take forever and your fingers will get bloody. Use it for heavy lifting backend work if you need to and then just let everything else talk to it via a web service. It's one of the most effective ways to take advantage of Java where it's needed and to not use it where it's inefficient to develop and not cost effective - aka, web apps.
One of Java's biggest flaws in the world of more and more client-side web apps is the save + build + war + deploy to app server + refresh + compile JSP at first runtime that takes absolutely forever. In other languages that are more suited to the web (PHP, Python, Ruby, Perl) you can simply hit save + refresh.
When you're
"Don't teach a man to fish, feed yourself. He's a grown man. Fishing's not that hard." - Ron Swanson
Web development has expanded into a very large and exciting platform for content and applications, both on the server and client.
Still, every time I open an article about it, all I see is a developer who's tortured at the thought of generating endless CRUD forms and writing elaborate explanations, why he had no choice, *no choice* at all, but climb high up on the abstraction ladder, so that he can do basic validation in cute one-liners.
That's great, but that's just a minor fraction of what web development constitutes today. The vast majority of those prefabbed CRUD frameworks do horribly at handling load, scaling across servers, hand-tuning the details to the customer's preference... and well, they do horribly at anything but CRUD. The web is more than CRUD and I do feel bad for the developers who do it for such lengths of time, they get accustomed to the false idea that this is the entirety of what web development is all about.
fyi, switch your slashdot prefs to "plain old text" and your posts will come out readable.
As a Java/C/RPG programmer, with 10 years experiance... I have to say, I don't have the foggiest what you're wittering on about!
With the amount of abstraction in software development these days, very few people seem to really know what they're doing anymore. This should concern you -- if it doesn't, you haven't thought about it enough yet.
We regularly see new exploits that affect systems that have been live for years, oft-times spanning multiple major versions and platforms. In retrospect these flaws are often usually painfully obvious, but because they have been buried in the layers of sediment of "best practices", "boilerplate" code and underlying platforms, they aren't seen. At least, not until a curious or malicious mind starts poking around.
While this is in part a problem with QA, the deception of abstraction is that it provides a Black Box that is very easy to trust. This affects developers as much as QA.
Are we really wise to keep building on these layers of abstraction? Toolkits on top of frameworks on top of virtual machines on top of operating systems on top of hardware -- even device manufacturers can't keep their locked-down devices from being rooted in a matter of days, sometimes even before release. While many of the Slashdot crowd laugh because there is a sense of social justice in seeing DRM broken, the same exploits may some day be used against systems we rely on. I don't consider myself a fearmonger, but I wouldn't be surprised to see significant digital infrastructure fail at some point, either due to malicious intent or simply instability, at some point in my lifetime. Poor software quality hurts us all.
I realize that I sound like an old man yearning for the better days, but I learned to program in assembly on 8088s, and I knew exactly what my programs were doing. I'm not saying I want to go back to that, but the idea that most developers these days don't even understand memory management or garbage collection blows my mind. Asking for a new language because getters and setters are too much of a hassle? Somebody get this kid a lollipop, please.
I read the article (no, I'm not new here) and the author's main point, emphasis original, is this:
Where does he draw the line at "wasting time writing code"? This is exactly the mindset that leads us to buffer overruns, SQL injections, and many other problems which should not make it into production software. He wants his developers to abstract as much as possible, but code reuse all too easily leads to blind acceptance and a failure to understand what is being imported. If he trusts that all those acronyms on the blog post he wrote are bug-free, then I would hate to be one of his customers. Not that there seems to be many categorically better options available.
In the end, I think we need to abandon the cycle of "software bloat to more powerful hardware to software bloat..." and figure out what we can do with what we have. Good grief -- look at CUDA! We have orders of magnitude more processing power in a single video game console than all the world's computers before World War II, and available memory is simply insane. Take a look at what Farbrausch has done, and you will see what dedicated focus on efficiency can do.
Stop being lazy, understand what you are doing, understand what you have available, and use it well.
"I still have the problem I complained about a few years ago: the problems that arise from mixing client side and server side markup in the same artifact"
Someone needs to start using haml.
I'm a bit confused.
It's 2010 and we discuss a java framework as if it represented "the state of web development"?
You have heard about rails and django, right?
Thanks! Didn't know about that.
I've since updated it, but it doesn't seem like there's any way for me to edit the original comment.
"Don't teach a man to fish, feed yourself. He's a grown man. Fishing's not that hard." - Ron Swanson
1. If the app needs that, it can be built without a whole lot of complexity. Abstracting it so that it can just be applied is a lot more complicated and bravo to Java for having that.
2. Single Sign On is not a complicated process. I worked as a J2EE architect and PHP developer for a telcom company a few years back. The java only team implemented their "standards based" single sign on system that was marketed by the J2EE vendor as doing all that and a bag of chips. Took forever to get setup, constantly had issues and was nowhere close to as good as advertised.
Eventually the VP came to our little web team of PHP + a specialty guys (J2EE, .NET, and Perl) because our stuff actually worked when we wrote it. We replaced the ENTIRE system with a from scratch SSO solution across 18 different internal and external sites/applications in under 2 weeks. You know why? Because J2EE talks a big game and has a whole lot of giant books but when it comes time to deliver it comes up short OVER and OVER and OVER again. It's going to be behind schedule, over budget, and under-functional 9/10 times.
3. Yes. You can.
Do you have any idea how much money corporations throw away on J2EE Application Servers to get that functionality built in? 6 figure numbers minimum.
Do you have any idea how much you need to pay for the annual salary of a good server admin? Usually less than that.
Do you have any idea how much time it will take for a good server admin to set that up for you? 2 weeks to a month so you can use it forever.
Session failover? Really? If you've got a multi-server app running it better darn well failover or you've written a POS app. Again, not that complicated to implement in less than a day.
4. Ah, the dream. It always sounds so good and yet, never really works that way. Great marketing pitch though.
5. Again, sounds good. J2EE app servers are very good for that, however, paid app servers for a lot of other languages will give you detailed trace modes for exactly that reason.
Getting a vendor to support you is a great idea too. It's actually more of a testament to out-sourcing than anything else though. By depending on a vendor to support their application, you're basically just paying to depend on their programming team, documentation, and training processes instead of yours. If you're trying to figure out if it's a server issue or an issue with the application that you've written in house, I hope you've already got the tools available to trace those down.
Finally, all this aside, I was a java guy before. Completely bought into all of the talk about ideal architecture, standards, "enterpriseyness", etc. I literally had the "I can't believe anybody would try to use anything but Java...it solves everything" mindset.
Then I saw it in practice and reality is far from what's spec'd on paper. For one thing, J2EE is serious overkill for 99% of applications and that is very important. When people get into java, they want to do EVERYTHING in Java. This is where most of the "standardize on a language" people come from. If you try to do everything a company needs in java, the company is going to simply hemorrhage money.
Additionally, the beauty of the web is that through web services, REST, and API's everywhere it's easier than ever to use the right tool for the job. J2EE is a swiss army knife. You can hammer a nail with it, but it will take forever and your fingers will get bloody. Use it for heavy lifting backend work if you need to and then just let everything else talk to it via a web service. It's one of the most effective ways to take advantage of Java where it's needed and to not use it where it's inefficient to develop and not cost effective - aka, web apps.
One of Java's biggest flaws in the world of more and more client-side web apps is the save + build + war + deploy to app server + refresh + compile JSP at first runtime that takes absolutely forever. In other languages that are more suited to the web (PHP, Python, Ruby, Perl) yo
"Don't teach a man to fish, feed yourself. He's a grown man. Fishing's not that hard." - Ron Swanson
In our office, we tried Grails and well.. we stuck with it now on a little sidekick project.
I think Spring Roo will bring some more interesting stuff.
The Eclipse support of Groovy is not there yet.
I'm much more upset about the lack of innovation in the way that people interact with computers. I know, Rome wasn't built in a day, but it seems like our OS could at least have the graphic appeal of say, Quake 2. Our Desktop is still so flat and limiting, and online collaboration is still so hokey and primitive. All this could be fixed, and largely for free if based on currently available FOSS. Instead we're cloning Windows XP with a prettier menu shade. WTF?
I'd like a 3d online space where my avatar can stand in the rustling grass of a windy prairie. In this environment, are a variety of nearby locations: A Desk, a Chess board, a poker table, a coffee table, a doorway, and a Super Nintendo. This environment could then be populated real time with the avatar of anyone else online at that time, with instant VOIP in 3d positional audio. In addition, the face of their avatar could be exactly modeled real time from a webcam image of the actual user's face. In this environment, either avatar can then interact with any of the aforementioned locations. Choosing to interact with the Desk would bring up an Windows XP clone, or a Windows XP Virtual Machine. Both Avatar's could use the desktop at the same time (by password invite, for avatar's from a separate IP as the host), real time, and continue their VOIP, and also have an optional skype cam pic up real time, directly from the 3d world. A simple key press would then exit back into the 3d environment and leave the other options (ESC). The Chess Board would work as a regular chess game, online, and with your opponent either being their webcam image, or their avatar with webcam mimicked facial expressions and jaw movement. The Poker Table would act much the same way, and any card game would be possible, complete with rules, and chips, etc.. The Coffee Table would have Digital Publications, Blogs, and other News and Information sources, directly updated real time from the Internet. The Super Nintendo would open an emulator locally and remotely, so both avatar's could play a multiplayer Super Nintendo game online, again, possibly with webcam images up simultaneously. The doorway would open an FPS as preferred by the local host, and I would have mine set to a customized Urban Terror, complete with 3d positional VOIP with whatever Avatar I walked into the doorway with.
This "Dream OS" would also optionally backup it's user files and information on several different computers real time over the internet, maintaining a backup of all your files and information on a distant machine, like your brother's, or cousin's. This would ensure that no matter you logged in, in the world, provided one of the machines was online with your backup information, you could get online and use your computer as normal from any computer in the world, including newer cell phones.
While we're at it, my dream cell phone would run this OS, and have an android mode for on the go travel, but when plugged into a USB charger, it would automatically work with a USB mouse, keyboard, speakers and Monitor, and then act as a regular computer. This cell phone would also have a front facing camera, for Skype like chat on the go, provided there's nearby wifi, or enough bandwidth. While on the road, this cell phone would act pretty much line a Droid, or a MyTouch, or a Nexus One.
Somebody build a few of these and send me one.
I hold very few opinions. I hold information based on observation and fact. If you wish to disagree, please use facts.
"As a Java/C/RPG programmer, with 10 years experiance... I have to say, I don't have the foggiest what you're wittering on about!" - by tonywestonuk (261622) on Monday April 19, @01:30AM (#31892982)
Ok then: My guess is because of the nature of work you probably do (guessing by those languages? Probably ALL databased work, doing reporting apps & such).
1.) Drivers & the OS kernel run in a processor ring privelege mode of Ring 0 (RPL 0) - this is also called "kernel mode".
2.) Apps that run in Ring 0/RPL 0 level of privelege have access to ANY & ALL memory running on the system (more than usermode/Ring 3/RPL 3 programs in fact, directly @ least, because they can address, in 32-bit @ least, 4gb and ANYWHERE on the system, unlike usermode apps, which are limited to their own virtual memory address spaces)...
Whereas by comparison?
3.) Ring 3/RPL 3/usermode apps can only DIRECTLY use 2gb of 4gb (per 32-bit process) @ a time, as directly/immediately useable to them (and, only in their own virtual memory space of 4gb @ a time (AND, 2gb of that 4gb is used by the Operating System to manage said app's memory space too, so effectively, 2gb is the MOST a usermode app can utilize BY ITSELF))
In fact? Hey - try this sometime: Allocate as much memory as you can to a usermode/Ring 3/RPL 3 priveleged app, & try to fill it with some data (anything, random chars if you like or 1's even)... &, then?
Then, you'll see you can only get to 2gb (of its entire 4gb per 32 bit process space) AND USE, only 1/2 of a 4gb per 32-bit process' virtual memory space.
NOW - I can see you not knowing that doing JAVA, or even RPG (my guess is you do RPG on an IBM midrange (zOS series now iirc? Last time I worked on these the OS was OS400, but, that's the ancestor of zOS now, again, iirc) of some sort, because I first ran into RPG III on IBM System 36/38 back in the tail-end of the 1980's)...
Mainly because because the former is runtime interpreted, & not used in "system programming" (drivers or kernel mode work) & the latter is more for reporting type apps usually on midrange systems.
However, since you've worked with C?
I am surprised this hasn't been something you've been made aware of OR even used/experimented with... but, if you're writing strictly usermode apps, vs. drivers (or other "techie type" system level type apps, vs. say, reporting ones for DB type work in MIS/IS)? I can see that occurring too.
That help??
APK
P.S.=> Been @ this stuff since 1982 academically (as an end user 1982 - 1987) & for work (1988-1993) as a technician on these machines (IT Work), & then later professionally since 1994 onward as a programmer-analyst/software engineer (this is where I started seeing, AND ACTUALLY USING, the difference in processor privelege use more) MOSTLY - but, sometimes that is 'smattered with' doing network administration/tech jobs too though (because largely as a DB developer (MIS/IS) for much of that? I had to be an admin too, to do the job right & to be able to handle more things without bothering others)... apk
Real programmers use butterflies!
http://xkcd.com/378/
Most people can't be an expert at all things, it is usually poor practice to attempt to implement all things yourself as most often those that wrote the library know better what they are doing. Sure if you are perfect and have infinite time doing what you propose makes sense, but it is almost always faster and usually safer to trust that the writers of a library know what they are doing.
Do you wish to write your own sort algorithm? Your own SQL interface? Your own filtering implementations? If so that I would hate to be your employer as you will be spending much more time writing less efficient code that probably has more exploits than some mouth-breather that just used the default libraries.
I understand your point, but abstraction is really important, an electrical engineer could never design a computer if he had to worry about what every transistor in his circuit did, he trusts that the amplifier provided works more or less as specified the same with the same with the phase detector and the variable oscillator. If he were to try to build it from transistors, (or worse from dopings in silicon) he would never get anywhere, the abstractions allow him to function, building something off the shoulders of those that created the various parts and trusting that they did their job well. It isn't perfect, but it is better than everyone starting from square one.
I washed my brains afterward. Ick.
Please do not read this sig. Thank you.
"you've been had, it's a troll you are replying to. He takes the parent's sentences, reiterates and adds pointless blubbering to make the comment really long, so you'd spend some time deciphering it." - by roman_mir (125474) on Monday April 19, @10:33AM (#31895900) Homepage
Roman_Mir: Can a Ring 0/RPL 0 based device driver read ANY memory in the entire virtual memory space of the entire system? Answer = YES, it can (otherwise, drivers wouldn't work right)... so, that said & aside, do you think OOP based programs in Ring 3/RPL 3/usermode can defend against that ability of a driver? Answer = NO... not all the "getters & setters" or private OR protected variable usage helps vs. a driver, because of what it is able to do (view ALL system-wide memory).
Additionally, What types of malware use bogus drivers regularly? Viruses, trojans, rootkits (blended threat types usually) do!
So, given that since a driver can "see into" any running hWnd (Windows handle to a process) and its entire memory address space (4gb per process, with 2gb to app that it can request, & 2gb to the OS typically for memmgt purposes (can be 3gb to running app/1gb to OS split in Windows NT-based OS though, via boot.ini switch of /3gb iirc though, as a "minor exception" that really wouldn't matter here, since a driver can 'see it all'))?
OOP & using protected or private variables as well as "getters &/or setters" doesn't really HELP "Object Oriented" process protection in an app running in RING3/RPL3/USERMODE, vs. a bogus driver running from Ring 0/RPL 0/kernel mode.
APK
P.S.=> If you're going to "troll me"? Learn that which you troll me on, first, & THEN decide to troll me or not... because this stuff's apparently above your head is what I am seeing, what-with your wise-ass remark based response... apk
You FAIL at humor roman_mir, you stupid goof.
See subject above, and answer the question, Roman_Mir you moronic GOOF!
See the question above and answer it. Also, who says you have 'taste' anyhow? Your own dull doltish brain?? Please: Give us a break already, Roman_Mir you GOOF!
Roman_Mir - You expect us to believe you are capable of writing programming code, when you are unable to write english sentences properly? You're undoubtedly one of those "people that write crappy code", yourself, you GOOF!
Roman_Mir doesn't even have a job (contractor my ass). Roman_Mir is the professional bum with no degree in computer science and he's saying he held a job in this science? rotflmao, no way. He's too stupid, what with his 100 below bacteria IQ to go with no actual degree in csc so, you know. Humor him, he's just another dull witted dolt is all.
Roman_Mir didn't do so well here http://developers.slashdot.org/comments.pl?sid=1622780&cid=31904240 just judging by his lame off topic trolling reply, as well as his inability to disprove what was written there. He says he's a professional programer? Bullshit. When you read his stupid off topic trolling reply, which is quoted there, and Roman_Mir's inability to disprove what the other person wrote, you will know what I mean.
Roman_Mir didn't do so well here http://developers.slashdot.org/comments.pl?sid=1622780&cid=31904240 just judging by his lame off topic trolling reply, as well as his inability to disprove what was written there.
This original post was talking about SOFEA and SOUI as if they are living things. But a little research shows they are dead as acronyms, anyway. I think really these concepts have become mainstream, at least in relation to SOA. And so they become anonymous concepts. But we do need a way to talk about these details and advance the status quo. So, how about it? Point us to discussions/acronyms/sites that talk about what the state of the art is in building clients for services. At the moment that would be some in depth way to use JSON and JavaScript to render a UI on top of business services, I think. But it's all up for debate! Cheers! The Captn...
Roman_Mir didn't do so well here http://developers.slashdot.org/comments.pl?sid=1622780&cid=31904240 just judging by his lame off topic trolling reply, as well as his inability to disprove what was written there.
Roman_Mir didn't do so well here http://developers.slashdot.org/comments.pl?sid=1622780&cid=31904240 just judging by his lame off topic trolling reply, as well as his inability to disprove what was written there.
Roman_Mir didn't do so well here http://developers.slashdot.org/comments.pl?sid=1622780&cid=31904240 just judging by his lame off topic trolling reply, as well as his inability to disprove what was written there.
Per subject-line above: Why? Because of this -
"I love it, apparently some trolling AC subscribed to my newsletter and is reading my every comment and needs to reply to all of them multiple times even. Excellent, next thing I know I have my own TV news station." - by roman_mir (125474) on Tuesday April 20, @10:58AM (#31910300) Homepage
http://developers.slashdot.org/comments.pl?sid=1622780&cid=31904240 it would appear that a quote has you shown trolling others, first no less, right in that url I just put up.
Also, per my subject-line above: Face the music there in that URL link then. If you don't then everyone knows your skills & knowledge in the field of computing is shockingly limited, and also that you screwed up badly also by avoiding "facing the music" in that url there.
If you do face the music, then your show's going to have to be a comedy is my guess because it's going to be funny watching you "eat your own words" roman_mir in that url I put up here, because you are just another dime a dozen "web developer" (that's a joke) and not truly a computer programmer is all.