J2ME or network programming or...what do you recommend?

R

rasputin16002002

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
 
M

Mark Space

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.
 
R

rasputin16002002

hiya

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).

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?
 
L

lord.zoltar

hiya





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?

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.
What do you mean by more?

There's ALWAYS more to learn. ;)
 
A

Andrew Thompson

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).
 
R

Roedy Green

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/01...mp=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
 
F

failure_to

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)
(e-mail address removed) wrote:

..


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
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

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
 
A

Andrew Thompson

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
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

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 ...)?

3)
(e-mail address removed) 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?!

I can only comment on the amount of J2ME related
questions we seem to get. Very few.
4)


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?

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
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?

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).
 
L

Lew

Andrew said:
OK - J2ME apps. all have a GUI, so stear clear of that.

Andrew said:
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.
 
W

Wojtek

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.
 
W

Wojtek

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.
 
F

failure_to

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?


(e-mail address removed) wrote :


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?

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.
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.

If I am to do anything at client side then I should learn all of the
above? *faints*

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
 
W

Wojtek

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 :)

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 ) ?

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).
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?

It depends. How quick do you learn? Again start small, then work your
way up.
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).
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.
 
F

failure_to

(e-mail address removed) wrote :



Hmm, not obsolete for a long time, I would think.





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.


Lots of different languges. The more you know...


All that I mentioned :)


As I mentioned. Well depending on how dynamic you want the client to
be.




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.




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).



It depends. How quick do you learn? Again start small, then work your
way up.



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).





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.

Thanx mate. This really helped alot
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,774
Messages
2,569,599
Members
45,175
Latest member
Vinay Kumar_ Nevatia
Top