Java Forum / General / December 2007
J2ME or network programming or...what do you recommend?
rasputin16002002@yahoo.co.uk - 20 Dec 2007 01:33 GMT Hi
I've been interested in programming for quite some time now and I finally decided to give it a try. I first learned a bit about network protocols and now I decided to learn Java and hopefully, if all goes well, I'd like to make a living with programming.
But I have to be practical about this and go into programming areas where my chances are best to actually start to make a living out of it ( of course if you are a great programmer you can succeed almost everywhere, but I may very well become just an average one at best, or not even that ).
And this is where I need you. As a beginner I'm a bit overwhelmed as to what to do next. I realize I must first learn the programming language itself, but then what?! My best guess would be to start learning how to program network apps, but that is just a guess. Or how about programming for mobile devices? Please do share your opinions.
BTW - must one learn network programming prior to programming for mobile devices (J2ME)
thank you
Mark Space - 20 Dec 2007 03:09 GMT > BTW - must one learn network programming prior to programming for > mobile devices (J2ME) I would personally recommend you learn the basics of network programming before taking on J2ME. Not that I think it would be espcially useful (I don't do J2ME myself) but becuase the concepts are so useful they'll be a big help no matter what you do.
Basics: 1. Java language first. At least a couple of months. 2. Java API next. There's a lot to learn here. 3. Spend some time practicing what you learned. Write a couple of medium sized apps. For networking, implement a couple of basic network programs, like telnet (no cheating, do the whole thing) and IRC (again, the whole protocol, client and server).
Now you are ready to learn more. I think J2EE is more popular than J2ME, but J2ME tends to be more of a niche, and I would think less competition for jobs too.
rasputin16002002@yahoo.co.uk - 20 Dec 2007 20:25 GMT hiya
> rasputin16002...@yahoo.co.uk wrote: > > BTW - must one learn network programming prior to programming for [quoted text clipped - 12 lines] > programs, like telnet (no cheating, do the whole thing) and IRC (again, > the whole protocol, client and server). Is there a site where you can get free source code and learn from it? I assume you learn to program by first looking at other apps and perhaps implement their code but change few things?
> Now you are ready to learn more. I think J2EE is more popular than > J2ME, but J2ME tends to be more of a niche, and I would think less > competition for jobs too. What do you mean by more?
lord.zoltar@gmail.com - 20 Dec 2007 21:28 GMT > hiya > [quoted text clipped - 18 lines] > I assume you learn to program by first looking at other apps and > perhaps implement their code but change few things? Actually, I think when you're first getting started, it's best to do the whole thing on your own. You can look at other people's snippets, but I don't know how much you will learn by using available code and making small changes to it. Sure that approach might be easier, but I don't think you will learn as much than if you did it all the hard way first.
> > Now you are ready to learn more. I think J2EE is more popular than > > J2ME, but J2ME tends to be more of a niche, and I would think less > > competition for jobs too. > > What do you mean by more? There's ALWAYS more to learn. ;)
Andrew Thompson - 21 Dec 2007 02:44 GMT ...
>> Now you are ready to learn more. I think J2EE is more popular than >> J2ME, but J2ME tends to be more of a niche, and I would think less >> competition for jobs too. > >What do you mean by more? Which of the three uses of more are you referring to? The general answer is that 'more' means 'bigger than' but its use might be modified by the context. - 'learn more' already covered, but to quote Edison "We don't know a millionth of one percent about anything" - 'more popular' - I suspect Mark meant more work/more projects, but also with more people vying for that work. - 'more of a niche' - smaller (I would say much smaller) market of work/projects & people going for them.
All that aside, I recommend going for one of the 'more popular' areas at this stage for a reason I have not seen mentioned yet. The more popular a technology is, the better help you are likely to get on public forums, when striking difficulties.
For that reason, I think you should steer clear of J2ME - it is not widely used.
OTOH - it pays to have a good grounding in J2SE 'desktop' before proceeding to J2EE 'server'.
Since you mentioned J2ME - which are apps. with a rich client GUI, it makes me think that using the J2SE's Swing GUI toolkit might be worth investigating.
The 'popularity' of desktop apps. to server side apps. (about 1/20) suggests Swing rich client programming would not be 'very popular' (it is possible to use a rich client to connect to a web app. - but most web apps. are designed to work in a plain old browser). But many people have swung gradually from rich client GUI development to thin client server-side development (& can still remember Swing dev., and like to show off their skill in it/keep their hand in).
 Signature Andrew Thompson http://www.physci.org/
failure_to@yahoo.co.uk - 21 Dec 2007 13:51 GMT hiya
I know I've already taken lots of your time, but I would greatly appreciate it if you could help me once more, since I got a bit overwhelmed.
1) Does word web programming mean programming network apps in general, or something more specific?
2) Only now I realized how out of the loop I really am. All I know is that I'd like to do some network programming ( not so much graphic user interfaces, since I don't think I'm very good at making things visually appealing to end users. I'm much more interested doing interesting things "behind the curtain" and then some chap of mine or coworker would make pretty user interface, so that people could use my program ), but it seems some technologies are in while some are already out of date. So my fear is that I will be spending lots of time learning technology that will turn out to be obsolete. For this reason answering the following question would be of great help to me:
a) So what are the technologies I should learn regardless of the kind of network apps I want to create ( should I learn servlets AND applets AND javascript AND XML and ...)?
3)
> rasputin16002...@yahoo.co.uk wrote: > [quoted text clipped - 6 lines] >I think you should steer clear of > J2ME - it is not widely used. But I thought that since everyone owns a mobile phone, that J2ME would be the most popular thing happening at the moment, but it seems that is not the case. Why is that? Since mobile devices are so popular, one would assume that there would be huge market in making apps for mobile devices?!
4)
> OTOH - it pays to have a good grounding in J2SE > 'desktop' before proceeding to J2EE 'server'. I assumed J2EE simply extends J2SE with additional APIs. a) But from your reply it seems as J2SE is not generally used for server side apps?
b) So after I read books Java Complete reference, Network programming with Java , then I must also read books specifically on J2SE and after a while on J2EE?
5)
> The 'popularity' of desktop apps. to server side apps. > (about 1/20) suggests Swing rich client programming [quoted text clipped - 3 lines] > people have swung gradually from rich client GUI > development to thin client server-side development As I understood your answer, if one is interested in network apps, then they should instead of Swing choose thin-client development? Why?
BTW - Since I'm not familiar with Swing - I assume it consists of APIs to create GUI on client side?
thank you all for your input
Andrew Thompson - 21 Dec 2007 16:47 GMT >hiya > >I know I've already taken lots of your time, but I would greatly >appreciate it if you could help me once more, since I got a bit >overwhelmed. I think a mention of 'networking' led to the suggestion of J2EE. It was more 'J2EE' I was thinking of in my first answer.
>1) >Does word web programming mean programming network apps in general, or >something more specific? No. To me J2EE (or JEE as Sun might call it at this FAD), is 'server side'. Obviously a server has no point unless it offers network connections to other places, but networking itself is something built into the J2SE. AFAIU, two machines might connect using netwotking, without any 'server' being involved.
>2) >Only now I realized how out of the loop I really am. All I know is >that I'd like to do some network programming ( not so much graphic >user interfaces, since I don't think I'm very good at making things >visually appealing to end users. OK - J2ME apps. all have a GUI, so stear clear of that.
>..I'm much more interested doing >interesting things "behind the curtain" and then some chap of mine or >coworker would make pretty user interface, so that people could use my >program ), Yep. I'm the kind of chap that will throw together a GUI with a few buttons for that type of API, likes as in 'The Giffer'. <http://www.physci.org/jws/#giffer>
Kevin Weiner wrote the API (to decode/encode GIFs), and I threw together a few buttons and things to make it easier for the user to encode GIFs.
>...but it seems some technologies are in while some are >already out of date. So my fear is that I will be spending lots of [quoted text clipped - 3 lines] >a) So what are the technologies I should learn regardless of the kind >of network apps I want to create ( should I learn servlets No. (Not only is that J2EE, but ultimately, servlets make for an HTML based, thin client GUI - so there is still 'GUI coding' involved).
>..AND >applets Avoid them like the plague. A plain deskop application, or one launched using Java Web Start *the same way 'The Giffer' is launched) is far easier to deploy and maintain.
>...AND javascript .. Only relevant if you want the (D)HTML GUI.
>..AND XML XML is handy for data storage & transmission, but not essantial.
>..and ...)? > [quoted text clipped - 10 lines] >one would assume that there would be huge market in making apps for >mobile devices?! I can only comment on the amount of J2ME related questions we seem to get. Very few.
>4) > [quoted text clipped - 4 lines] >a) But from your reply it seems as J2SE is not generally used for >server side apps? Well, yes it is. A lot of the actual code written for servlets relates to classes that come straight out of the J2SE - things like Files and IO, networking, image or sound processing..
>b) So after I read books Java Complete reference, Network programming >with Java , then I must also read books specifically on J2SE and after [quoted text clipped - 10 lines] >As I understood your answer, if one is interested in network apps, >then they should instead of Swing choose thin-client development? No. But then, I think it's immportant if you want to devlop the type of APIs that other people want to use, to concentrate on running them from the command line, or a 'headless' environment.
That way, when the API is written , people can use it for a servlet (off their J2EE based server) that churns the result out to HTML, or for a web start based 'rich client' Swing app., or as a plain (not web start app.) or .. by some server that is running headless, taking streaming data from satellites, and using the API to detect sudden changes in ocean temperature which it raises as an SMS alert.
>Why? > >BTW - Since I'm not familiar with Swing - I assume it consists of APIs >to create GUI on client side? Yes. Swing is used for the (rich client*) GUIs of 'client side' apps (though those apps. can reach out 'anywhere' including to a J2EE based back end). * This includes applets, desktop applications (and webstart launched applets or applications).
 Signature Andrew Thompson http://www.physci.org/
Lew - 21 Dec 2007 17:06 GMT failure_to@yahoo.co.uk wrote:
>> 2) >> Only now I realized how out of the loop I really am. All I know is >> that I'd like to do some network programming ( not so much graphic >> user interfaces, since I don't think I'm very good at making things >> visually appealing to end users.
> OK - J2ME apps. all have a GUI, so stear clear of that. failure_to@yahoo.co.uk wrote:
>> a) So what are the technologies I should learn regardless of the kind >> of network apps I want to create ( should I learn servlets
> No. (Not only is that J2EE, but ultimately, servlets > make for an HTML based, thin client GUI - so there is > still 'GUI coding' involved). Never mind the 'G' for a moment - a developer must be competent to design a UI, because the UI is the whole reason for the program.
This is a widely-overlooked point, leading to the common mistake of allowing programmers to design software.
This is not to say every developer has to be a graphic genius - I freely admit to being of the "not a graphic genius" category, and have gladly paid someone to write a stylesheet for my JSP-based app.
But the basic principles of great user-interface design are well-documented (/About Face/, by Alan Cooper, et al., is probably the best) and can be learned by a decent engineer.
Make it useful - to the point where the user can ignore that there's a computer and just concentrate on their work. This has a lot to do with the behavior of the UI - when, where and how often you have to click, and do you need a popup just to see what already should have been in the dropdown? - whether the task flow via the program matches well with the cognitive and functional needs of the program's user. Put things near each other on the screen that work well together or need each other. Make big text boxes without too much background surround - enough to make it easy to see which is which, is all. And for Gosh' sake align the boxes. Everything you can do should be reachable somehow from the main menu; everything else is a shortcut.
Don't make yellow-background text boxes against a purple-background dialog box. (I did not make that one up.)\
For most applications, a good UI is self-effacing - the user should never consciously notice it. Now do that on a graphic screen and it's a GUI. Hire the graphics genius to give it polish, but you as a developer need to know how to implement what they suggest, and understand their explanations for what they do. Ultimately it's your responsibility to make sure the look doesn't interfere with the feel.
 Signature Lew
Wojtek - 21 Dec 2007 17:35 GMT Lew wrote :
> Don't make yellow-background text boxes against a purple-background dialog > box. (I did not make that one up.) Oh my, that brings back memories.
I once saw a screen where different parts were "separated" by being different colours. Different primary colours. So a green background with a black foreground, blue background with a white foreground, yellow, red, magenta, etc
It was horrendous.
 Signature Wojtek :-)
Wojtek - 21 Dec 2007 18:01 GMT failure_to@yahoo.co.uk wrote :
> So what are the technologies I should learn regardless of the kind > of network apps I want to create ( should I learn servlets AND > applets AND javascript AND XML and ...)? How deep do you want to go? Are you doing the entire Web page, or are you simply supplying data which someone else will extract to the screen? Do you have a Database Administrator (DBA)?
If you are doing it all then:
Server side: Java - servlets, where all the real work is done SQL - for all the database work XML - for passing information around, and the application server web.xml file property files - for configuration I18N - internationalization (an I followed by 18 letters followed by an N) - This would be what the user sees.
Client side: JSP - well OK, it is on the server, but given to the client. XHTML DHTML - for dynamic effects such as mouseover CSS - for layout, colours, fonts Javascript - for interactive support AJAX - not the entire set (though you can), but enough to be able to communicate in the background.
There are third party Javascript tools for menus, rich text editors, spell checking (some dynamic), date pickers, pop-up boxes, and so on.
You can also look at the Google Web Toolkit ( http://code.google.com/webtoolkit/ ). You build up your screen in Java using the toolkit, then it is rendered at the client entirely using AJAX.
 Signature Wojtek :-)
failure_to@yahoo.co.uk - 21 Dec 2007 20:16 GMT hiya
My head is spinning just from thinking how much I must learn. My biggest fear is that by the time I learn most of this stuff, it will already become obsolete ( I'm talking about XML, DHTML, XHTML, JSP )
More of you guys answer my first three question, more I will be able to draw some conclusions about how and what :)
1) a) Would you recommend learning as much different technologies as possible ( JavaScript, servlets, DHTML, XHTML ... ), or would you recommend more of specialization ( knowing less technologies, but can go deeply when trying to understand them ) ?
b) Are you guys more of specialized type or do you know alot of different technologies ?
c) what technologies do you use on regular basis when programming apps?
2) Say you guys want to build Yahoo like chat server-client program. What technologies ( servlets etc ) would you use on: a) server side b) client side
3) Uh, I have 1000 pages long Java book in pdf format, which includes chapter on servlets, but no mention of J2SE or J2EE. So will I have to buy a book about J2EE specifically, even if the book I have already explains Servlets?
4) do you also recommend learning in addition to java some lover level language ( like C ), to provide additional functionality ( when needed ) to java server programs?
> failure...@yahoo.co.uk wrote : > [quoted text clipped - 5 lines] > you simply supplying data which someone else will extract to the > screen? Truth be told, I have no idea if doing entire Web page all by myself is even possible. Only thing I can do is ask all of you guys if that is even recommendable ( I thought that the more different technologies you know, less good you are at each of these technologies ) and if you're able to do entire Web pages by yourself and some time span of how long would it take for me to become somewhat proficient at this?
> Client side: > JSP - well OK, it is on the server, but given to the client. [quoted text clipped - 4 lines] > AJAX - not the entire set (though you can), but enough to be able to > communicate in the background. If I am to do anything at client side then I should learn all of the above? *faints*
> >...AND javascript .. > Only relevant if you want the (D)HTML GUI. So thin-client GUI ( made by servlets ) is not the same as (D)HTML GUI?
thank you kindly for your input
cheers
Wojtek - 21 Dec 2007 20:47 GMT failure_to@yahoo.co.uk wrote :
> hiya > > My head is spinning just from thinking how much I must learn. My > biggest fear is that by the time I learn most of this stuff, it will > already become obsolete ( I'm talking about XML, DHTML, XHTML, JSP ) Hmm, not obsolete for a long time, I would think.
> More of you guys answer my first three question, more I will be able > to draw some conclusions about how and what :) [quoted text clipped - 4 lines] > recommend more of specialization ( knowing less technologies, but can > go deeply when trying to understand them ) ? I started doing the servlets along with the JSP. Once I got the communication working (user clicks a button, I read the data, I send back the result), then I started to do some fancier stuff. Bit by bit. For instance I know enough Javascript to be able to do some simple stuff. But not nearly enough to write a spell checker.
> b) Are you guys more of specialized type or do you know alot of > different technologies ? Lots of different languges. The more you know...
> c) what technologies do you use on regular basis when programming > apps? All that I mentioned :-)
> 2) > Say you guys want to build Yahoo like chat server-client program. What > technologies ( servlets etc ) would you use on: > a) server side > b) client side As I mentioned. Well depending on how dynamic you want the client to be.
> 3) > Uh, I have 1000 pages long Java book in pdf format, which includes > chapter on servlets, but no mention of J2SE or J2EE. So will I have to > buy a book about J2EE specifically, even if the book I have already > explains Servlets? Only if you want to use Enterprise Java Beans (EJB). But those are for really large scalable projects.
Servlets are quite easy. You accept user input (get or post), parse the data, do something with it, place the result into a data object, then forward that to a JSP. The JSP retrieves the data object, fills in the HTML, then sends that back to the user.
I have books, but they are mostly reference (ie cookbook style). I do not think I have ever read a tech book cover to cover.
> 4) do you also recommend learning in addition to java some lover level > language ( like C ), to provide additional functionality ( when > needed ) to java server programs? No not really. If you want portability, then never. I can do everything in Java, so do not need any other server side language (SQL excepted).
>>> So what are the technologies I should learn regardless of the kind >>> of network apps I want to create ( should I learn servlets AND [quoted text clipped - 10 lines] > you're able to do entire Web pages by yourself and some time span of > how long would it take for me to become somewhat proficient at this? It depends. How quick do you learn? Again start small, then work your way up.
>> Client side: >> JSP - well OK, it is on the server, but given to the client. [quoted text clipped - 7 lines] > If I am to do anything at client side then I should learn all of the > above? *faints* Piece by piece. Start small, then learn what you need as you go. Read a lot. Google is your friend.
For instance, at first do not use DHTML. Once you are comfortable usin HTML, then start adding the dynamic part (onmouseover, onmouseout, gotfocus, blur, etc).
>>> ...AND javascript .. >> Only relevant if you want the (D)HTML GUI. >> > So thin-client GUI ( made by servlets ) is not the same as (D)HTML > GUI? Fat client - most if not all the work is done at the client. Requires large executables to be downloaded. Updates require another d/l. The server, if any, only provides a central storage place with very little business logic.
Chubby client - all the grunt work (SQL etc) is done on the server along with all the business logic. However the client has a lot of code which runs to provide the user with a "rich experience". This code is loaded every time it changes (barring caching control) with no interaction by the user. AJAX etc falls into this category. And Web 2.0
Thin client - Provides a user interface with no real dynamic interaction. This would be how most of the current Web pages work.
 Signature Wojtek :-)
failure_to@yahoo.co.uk - 23 Dec 2007 14:58 GMT > failure...@yahoo.co.uk wrote : > [quoted text clipped - 123 lines] > -- > Wojtek :-) Thanx mate. This really helped alot
Roedy Green - 21 Dec 2007 05:36 GMT >But I have to be practical about this and go into programming areas >where my chances are best to actually start to make a living out of it >( of course if you are a great programmer you can succeed almost >everywhere, but I may very well become just an average one at best, or >not even that ). I would say the next step is to get a copy of Marty Hall's book Core Web Programming.
http://www.amazon.com/gp/product/0130897930?ie=UTF8&tag=canadianmindprod&linkCod e=as2&camp=1789&creative=9325&creativeASIN=0130897930
Then do some projects that automate things a browser does. I suggest the "version checker project at http://mindprod.com/project/versionchecker.html
The learn JavaME.
See http://mindprod.com/jgloss/javame.html
 Signature Roedy Green Canadian Mind Products The Java Glossary http://mindprod.com
Free MagazinesGet these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...
|
|
|