Thoughts On the State of Web Development 253
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!)."
getters setter :) (Score:5, Insightful)
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.
Re: (Score:2, Informative)
Geez, again with the same excuse: "My IDE generates them automatically". Yes it does, but Java IDE's are not the only one's that can do that, duh.
Deeper problem is that you later have to use those "fully automatically with just a few special clicks" getters and setters like this in your code: point.setX(point.getX()+1); instead of just writing point.X++;
2.7 times longer line than it ought to be. And with current java IDE-generated non-VM supported getters/setters all of the shorthand abbreviations such as +
Re: (Score:2)
all of the shorthand abbreviations such as ++ -- += -= *= etc are unusable
So you're saying we can't implement Brainfuck for Java? OH NOES
Re: (Score:2)
ooh tough guy, name calling as Anonymous Coward.
You seem to be the guy. I want to be the guy too, Anoncow. How can I be the guy?
Re: (Score:2)
Geez, again with the same excuse: "My IDE generates them automatically". Yes it does, but Java IDE's are not the only one's that can do that, duh.
- 'duh' what? Where do you see me arguing against this point?
Deeper problem is that you later have to use those "fully automatically with just a few special clicks" getters and setters like this in your code: point.setX(point.getX()+1); instead of just writing point.X++;
- again, what? I said I use classes often without getters / setters, so this is exactly what I can do. Do you understand that getters / setters are a choice and are not mandatory? They are not required by the language. I think you do understand that, you just are not understanding what I wrote in my first comment.
Re: (Score:2)
point.moveLeft(1) is as valid as point.x-1
Re: (Score:2)
Re: (Score:3, Insightful)
Re: (Score:2)
I guess I will have to leave the same comment over and over again. What in the language (Java in this case) makes you do any of that?
This is a dumb point.
x++ works
point.x++ works
point.moveRight(1) works
choose your poison but don't blame a language of the choice of a programmer
Re: (Score:2, Interesting)
You do not think OO enough. The problem is that you think about, "how can I modify an object" instead of "what services that class should provide". You rarely need inc, mult, etc, they are very primitive operations, and indicate a poorly designed interface -- as you noted, too. The class here is a Vector (or Point, which is the same), so instead of inc, mult, you can simply use add(Vector delta), and scale(int lambda) -- which are the natural operations for a Vector. You can also have rotate, mirror, etc.
Re: (Score:2)
Writing a METHOD to do basic arithmetic options such as incrementing a variable by 1 ?
Look, objects and have their place ... that doesn't mean you have to use the fuckers everywhere !
Methods encapsulate a commonly used piece of code, and are very useful if that code changes in future. How exactly could "increment a variable by 1" EVER need modification at a later date ?
If you use that as your guideline, you'll never find yourself making dumbass statements like "point.incrementX(1) is just as clear as point.
Re: (Score:2)
The idea with getters and setters is that in the end the value may not actually be a field (it may be computed), and interfaces can't contain fields. Plus the JavaBeans style naming conventions are pretty ubiquitous in the Java world... not sure if everything works right with just plain fields like that (it may).
Re: (Score:2)
As long as this is my project, everything will work without getters/setters where I choose not to use them.
Re: (Score:2)
what??? (Score:2)
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!
Re: (Score:2)
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.
Re: (Score:2)
First, getters/setters are generated by your IDE of-course
Programs should be written for people to read, and only incidentally for machines to execute. I, for one, am not willing to read three additional lines of code and declarations for every line of code that actually does something.
Re: (Score:2)
Once again, (you are not the first coming up with this), you can chose to view or not to view various things in your IDE, like getters/setters don't need to be visible, however, I am saying that my choice is often not to use them in the first place and just to access a public/protected field directly without any getters/setters, it certainly is NOT FORBIDDEN in the language.
Re: (Score:2)
> First, getters/setters are generated by your IDE of-course
No, I think that is exactly what the article is about: your IDE is the wrong level of abstraction. Adding generators does not change that, as long as you still view, save and edit the generated code. Code generation in general is usually a sign of things going wrong, especially if used as scaffolding.
The right level of abstraction is thinking about data, not state, and not code. Define your date, and please use a more modern approach than SQL, w
Re: (Score:2)
I am building big systems quickly, my comfort zone is about speed of development, security of the product, speed of response, minimization of errors, ubiquity of the platform so that the development is not cornered by lack of people familiar with it.
I am not about to do something so stupid as change a platform for the sake of changing platform when a business depends on it. Go write a blog or something.
(oh, and getters/setters are not mandatory in the language so I often skip them and use fields directly,
Re: (Score:2)
Uncle Fester?
java centric (Score:3, Informative)
Using Java for web development (Score:5, Insightful)
Re: (Score:2, Interesting)
Or just dump the server side all together, seriously with the maturity of the JavaScript frameworks, there is no reason to build on restrictive server side technologies, just build your UI with HTML/CSS/Javascript and communicate back to RESTful services implemented in whatever language the back end team chooses. This fixes a lot of things that where broken in web development not to mention that it is a far faster development style and is more maintainable to boot.
Re: (Score:2, Informative)
TFA (Shock! I read it) says that this is his new preferred method. Separate all the server and client-side logic. Push almost all the logic into the client.
Re: (Score:2)
I think the only reason this even made the frontpage is because the editors like a good discussion.
The subject pretty much doesn't interrest anyone, right ?
People who do not learn from history.... (Score:4, Insightful)
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.
Re: (Score:3, Interesting)
These kids today who act like there's some art to programming that's instinctual, that they should be comfortable programming when they don't know shit about the language they're using. Guess what, C is the most comfortable language ever invented. Perl is one of the fastest to write.
Of course, perl is designed for text. HTML, while a subset of "text", is a pretty complex markup language. To generate such code using another language is not trivial. Then you're dealing with networking, web servers, the i
Re: (Score:2)
Spring is the only real alternative, but given the state of J2EE it has taken until version 5 that JEE really became usable, you speak mostly of the merits the app servers give you but seriously until JEE 6 JEE in many areas was a mess (EJBs while good in idea were barely usable due to the XML bloat, the entire ORM part was broken so people had to refer to alternatives outside of the JEE realm)
The first version which I would call outright excellent is JEE6 and this one is the first which beats Spring in the
Re: (Score:2)
IMHO, programming language wars are silly. The proof of the pudding is in what you can achieve with the framework of choice.
The flaw in your reasoning is that programming languages can and do affect the expressivity of frameworks that are written in them.
An example that has recently become very obvious is the presence of first-class functions in the language. If you've seen the newer additions to the .NET class libraries, or what people do with Java-with-closures prototypes, you should know what I mean. If you haven't, then are you really in a position to judge?
Re: (Score:2)
Nonsense.
Sure. Most apps don't need that, mind you, but if there's a need then 2PC is fairly trivial to implement *where it's needed*.
What does that even have to do with anything?
Re: (Score:2)
The professional grade alternative is that you drop the half the superfluous bullshit J2EE seems to support and build and honest-to-God web architecture like God intended: shared-nothing workers on the web server and scale out on the database, use job queues that go to a compute farm if you need that. A decent web framework has transactions built-in so I don't even have to think about the problem, SSO is handled with a cookie and a generic backend that plugs to whatever you want, you don't need special clus
But Grails is like Rails (Score:2)
Re: (Score:2)
Using Java for web development is like using a wrecking ball to hammer in a nail.
Actually, *that* sounds pretty effing cool, almost Mythbuster-like! I'd like to try that some time. But using Java for web development? *That's* just crazy-talk.
Re: (Score:2)
Re: (Score:2)
Need a New UI Tool (Score:5, Insightful)
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.
Re: (Score:2, Informative)
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.
Right. Java applets!
Re:Need a New UI Tool (Score:4, Insightful)
Well, there's at least proofs of concepts for Ruby (JRuby), Python (Jython) and Groovy.
Re: (Score:2)
Those aren't really proofs of concept, they're used in many production environments.
The JVM is basically king of multilanguage "common runtimes." There are tons of languages targeting it.
Re: (Score:2)
My personal favourite being Clojure
http://clojure.org/ [clojure.org]
It has excellent Java interop.
Re: (Score:2)
Proofs of concept using those languages in applets, not in any kind of app.
Or are they used for applets already? I couldn't find much info about it.
Re: (Score:2)
Yeah, they're just java libraries that support executing script code so there shouldn't be any problems using them in an applet.
You can do anything in an applet that you can do in a Java app. The only difference being applets tend to be sandboxed more heavily due to the obvious security issues associated with their distribution. I should point out that you can sandbox regular Java apps in the same fashion, but it's less common.
Most of the popular languages for the JVM have compilers that let you compile to
Re: (Score:2)
Not to take away from your answer, but OP was j/k. He was saying "it's 1996". :)
As for XUL... well, there's another semantically-bloated language.
Oh, and in XUL's case: "it's 1999". :D
Re: (Score:2)
The main issue with (X)HTML is that it's not meant to be used for application user interfaces. This shows partly in the types of "widgets" (form elements basically) available and in the severely lacking layout possibilities.
Building basic user interfaces for various business web apps is probably the most frustrating part of web development, and the frustration coming dealing with building user interfaces using HTML, CSS and Javascript is definitely a major contributing factor.
Re: (Score:2)
This was my view on web development for quite a while, until I gave jQuery a try and put aside some time to properly understand CSS. It's honestly not that bad.
There still is a bit of frustration (in getting everything perfect on all major browsers) but t
I'm asking because I don't know (Score:2)
Are the client-side data validations declarative or do you still have to use Javascript to make them happen?
Re: (Score:2)
Essentially HTML is the world's biggest legacy system. The problem with finding a replacement is that everyone in the world uses HTML, thats a consequence of what state the technology was in when the internet took off. Even if you could find a replacement, convincing everyone to switch over is a pretty gargantuan task, esp. when you factor in the chicken and the egg issue, you aren't going to get people to switch to your platform of choice unless there is content,
I guess it's human nature but .. (Score:2)
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
Re: (Score:2)
"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."
But HTML came first. Niche oportunity is already lost.
Re: (Score:2)
Re: (Score:2)
Interesting, but why not take it one step further and do a lazily-downloaded environment, so as that applications can be super rich like desktop apps and still have all the advantages of web apps? app components could be downloaded strictly on a need basis and only when new versions are available. The mechanism will make sure components are cached locally in an appropriate manner.
I dream of the day that I can import components from URLs... (import www.mycompany.com/mycomponent, for example).
Re: (Score:2)
You mean like Javascript?
Any interpreted language can easily do it. Just download the file with the code, check it against some hash/public signature and import it.
You could do a proof of concept in Python in 30 minutes, using nothing but the standard library.
Re: (Score:2)
You have just described Sun's Java Web Start, and Microsoft's ClickOnce.
Re: (Score:2)
Re: (Score:2)
No, actually, they work just as GP described:
a lazily-downloaded environment, so as that applications can be super rich like desktop apps and still have all the advantages of web apps? app components could be downloaded strictly on a need basis and only when new versions are available.
They do indeed download classes (or, in case of ClickOnce, .NET assemblies) from the web as they are needed, and also do version-checking every time this happens, so if class/assembly updates on the server, it will be automatically refreshed on the client next time it is used.
Now, I don't think either one lets you reference components from varying base URLs - at least ClickOnce requires a single base URL for all components, if I remember correctly.
Re: (Score:2)
Webstart allows you to specify extension URL's, that are different from the Base URL....(though, admittedly there is an existing bug that prevents resources within these extension URLS from redownloading should they be updated :-( )
Re: (Score:2)
Re: (Score:2)
Microsoft has a good strategy with
Re: (Score:3, Informative)
as a line break? That's really not what they're for).
It's sad, but the problem is HTML has been developed by a committee, and not just a committee but a committee with conflicting goals. Some people want to make desktop-like GUIs, oth
Re: (Score:3, Informative)
It’s called QtDesigner & friends. Or XUL. Look it up.
Basically, it’s an old hat. A very old hat. I did things like that back in 2003.
I’m back to plain and simple... compiled desktop/server/mobile programs. I still use something like XUL (but in EBML with a tag-mapping attachment), but I mostly generate that “XUL” from SQL DDL, as an itermediate representation, and plain machine code as a final result.
As an example: A complex application usually takes the time to write a cle
Re: (Score:2)
It is already happening. Look for the AppWeb project towards the end of the year.
Re: (Score:2)
It's time to throw in the towel and start a new tool and markup language.
Or maybe spend long enough on a single version to make something stable. The "new" tool and markup language has been done plenty before. SGML wasn't good enough, so then came HTML, then HTML wasn't good enough, so there was XML. Apparently now XML isn't good enough, so we need SuperMegaMarkUpLanguage. It's funny, but software projects actually require time to mature. There needs to be a phase of "hmm this almost works, except..." instead of "these really minor annoyances are no good, gotta start over."
Of co
Re: (Score:2)
Frameworks do not work. Quit it. (Score:2)
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 t
Re: (Score:2)
piece of software that a million people have hacked the shit out of it's the thing that Delivers.
thats the gist of the concept. it was freely available, its code was simple despite being a mess, and million people hacked the shit out of it. therefore, despite being a mess still, it can work as anything, and therefore, it delivers.
Re: (Score:2)
what i think is, 3 layers is more than enough. ie, machine code, c, php and it should stop there, in case of web apps for example.
any application made on the 3rd layer, when they grow sufficiently big, become as complex and wide as a framework itself. so, its not necessary to limit things by putting a 4th layer on top of this.
Web Development? (Score:2)
They took our jobs! [youtube.com]
Almost most IT and Web Development jobs have been outsourced to third world nations.
They took our jobs! Duurkee duuuurr!
Apache Wicket (Score:2)
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!).
!
Re: (Score:2)
I find it ironic how, in the end, the Java camp has came to the same "stateful Web" model for frameworks for which ASP.NET was originally ridiculed (and which is being departed with in ASP.NET MVC).
I haven't used Wicket, but from what I've read about it, it sure sounds a lot like ASP.NET, except that it's actually done right (and in Java).
Re: (Score:2)
I used Wicket a few years ago. It wasn't god-awful, but between the irritation of keeping the HTML in synch and of trying to make a custom component or even fix Ajax behaviors gone awry, I don't think it pulled its weight in the power/complexity added ratio.
Play framework is the way... (Score:3, Interesting)
Re: (Score:2)
I've been watching "play" for a while now; it seems to be getting pretty good press. Can you go into a little more detail what you like about it? What's your "work flow" like if you want to add, say, a new screen? How [well] does it interact with your DB layer, etc? Would love to hear some real world stories; both good and bad.
Re: (Score:2)
I've been using Stripes [stripesframework.org] for a while now and what I prefer about the approach there is that it does not mandate how to interact with the data access layer. In an MVC design pattern approach, Stripes focus strictly on the V and the C and leaves the M alone.
Web Development or CRUD Development? (Score:2)
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 c
We're going the wrong direction (Score:5, Insightful)
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 [wikipedia.org] 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.
Re: (Score:3, Insightful)
I haven't read your whole post in depth, but this stood out:
No, rewriting functionality that already exists in stable, tested libraries is the mindset that leads us to buffer overruns, etc.
Been living under a rock? (Score:2)
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?
Off Topic. (Score:2)
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
Re: (Score:3, Funny)
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...
And on that desk, a computer. I virtually sit down in the virtual chair in front of my three-dimensional virtual desk, press the virtual power button, look at the virtual monitor (300 feet wide!) and am confronted with... ad infinitum.
Re: (Score:2)
Um,
This is not about java on the client it is about java on the server via tomcat, jetty, or some other java app server.
All of the sites listed at http://www.opencms.org/en/support/references/index.html [opencms.org] are java based, as is opencms.org itself.
This is about getting the post blog entry function to work. the html is more or less trivial. The server side is a bigger issue, as you have access control. data sanitation, and bunch of other minor details that will get your website compromised if you screw them up
Re: (Score:2)
Java is not a security risk for browsers in the context of server-side web development (which is what TFA is about).
Re:Rails is Awesome (Score:4, Insightful)
It rocks until you need to support more than a dozen users. Then you need something like Java, which as proven to scale to meet any demand.
Just ask the folks at Twitter.
Re: (Score:2)
It was documented at http://highscalability.com/scaling-twitter-making-twitter-10000-percent-faster [highscalability.com] that a language change would have provided a 10%-20% speed increase, while architectural changes that Ruby on Rails could easily accommodate would provide with them with increases of 10,000%.
Re: (Score:2)
Except that it was not documentet at all. It was just stated as a fact with absolute nothing to back it up. Aka an analysis pulled out of his a**
Re: (Score:2)
You only can make rails scalable by going into the java domain even by just moving over to jruby to get threading ... but even then rails follows patterns which have their limits the more you need scalability the more you have to move away from what rails provides ootb and the less you save time.
But in the end, scaffolding is the only real timesaver there, and rails has no monopoly in this area, and I would not even call a scallfolder too much of a timesaver it saves some time for the standard coding fronti
Re: (Score:2)
I have no citation here, but I suspect twitter was well beyond "a dozen" users before they started feeling whatever pain they said Rails was behind.
Re: (Score:3, Insightful)
In Java, its a weakness about interfaces- you can't have a data member in an interface, so any interface needs to use getters/setters.
In most languages, its so you don't give direct access to internal variables. In C++, you can just make the data member public and assign to it like a normal variable. But then you can't protect what is stored there or do sanity checks. Or you can write a getter/setter to do so. And if you decide to change from one to the other, you need to go back and change every acces
Re: (Score:2)
I would not call the interface mechanism a weakness, interfaces come straight from eiffel and are contractual "interfaces" in a sense that they allow a loose
coupling of classes while still forcing you to some standard which reflective mechanisms do not. Interfaces are an awesome mechanism
for certain things.
Javas problem in this are is not the interface, they are heavens sent it is the lack of a real property mechanism. True you dont write setters and getters anymore, but something is wrong if the average cl
Re: (Score:2)
Btw. interfaces do not prevent not to have real properties, you could use a special property keyword to push them into interfaces without having to revert to endless setters and getters.
Re: (Score:2)
Some languages like C# provide syntactic sugar to allow you to use foo.bar=9 and have that call a function, but there's problems with this- its impossible to know when you're calling a function or not by inspection, so you can have bugs that are difficult to find by code inspection- = does not always do what you expect it to. I prefer writing getters and setters to that.
If you're using getters and setters for all field access, then you're not any better off than seeing assignment to a field in C# - you still don't know if those methods you call are trivial (just return/set the wrapped field), or whether they do expensive computations.
The whole point of C# properties is that, in most cases, those getters really are trivial and field-like. In fact, Framework Design Guidelines (the de-facto standard API style guide for .NET) say that you should only use a property when it doe
Re: (Score:3, Informative)
In Java, its a weakness about interfaces- you can't have a data member in an interface, so any interface needs to use getters/setters.
Not true if the field is declared static.
Re: (Score:2)
I know them back from the good old TurboPascal/Delphi years, properties never really have been an issue . :-(
This is one thing I have been lacking from java since 0.7
I personally think the sideffects of having endless getters and setters in the code is worse than the sideffects of applying a property wrongly.
Btw. I do not particularily like the auto propertying languages like Groovy do.
I personally prefer to mark instance variables as properties.
Re: (Score:2)
You mean: Only machine code is true!
Kids these days...
Re: (Score:2)
Learning Perl today is gunning for a job as a maintenance programmer.
Or a Unix SysAdmin. Assuming the breed doesn't die out :-S
Re: (Score:2)
Re: (Score:2)
I would not scale annoying it is a nice language, but I am not sure about its approach of pressing domain specific language mechanisms into the core.
Outside of that it is nice, although I settled for groovy for my scripting language needs, in this area. Scala does not bring too much to the table for me to switch over for the occasional usage I have for this language domain (which is mostly, prototyping, switching over whenever closures make sense etc...)
The biggest problem is that many companies have a no s
Re: (Score:2)
Is it just me or is software design generally to difficult, you just should define your system in uml with all rules in place and then generate the code.
The problem is all this fails usually in detail, where you have to deal with platform specific issues, client specific issues, rules you cannot cover in the description language, deployment szenarii, existing infrastructure, whatever you name it.
Re: (Score:2)
This is a mismatch of ui paradigm. Ajax is used to enable rich client interfaces where the back button simply does not make sense anymore unless you save a continuous application stage (which again is not possible with ajax due to its non continous flow)
The limited programmability of the back button does not help there too much.
On the other hand the back normally is used as a document specific buttom which should help the user to jump back into the "DOCUMENT" history
which a rich client app almost never is,
Re: (Score:2)
I think so too, Wicket is a really nice webapp framework, probably one of the best there is, and since it limits itself only to the ui aspects you can use whatever the entire java ecosystem provides in the backend area, which is a lot. I am not sure if moving to an abstraction like grails provides really will make him happy, but I have yet to use grails (although I work with lot of groovy)
I only can see the auto scaffolding being a timesaver for him, outside of that he just replaces one language with the ot