I am a newbie Linux user who came from 10 years using windows OS, and developing in Microsoft languages.
I want to have a good experience in Linux world and developing on it.
First, I want to learn how to use this new OS, then how to start developing on it, I am interested in web applications, specially using Java/PHP because I have some experience in both and it will be a good start.
Second, I want to learn how to develop on it.
Are there any video tutorials to give me a good starting push?
any recommended books or references?
views:
914answers:
9Java development is something you can do with ease using Eclipse on Linux. PHP development is more or less the same as on Windows. Use a good text editor to write the PHP scripts.
Installing the required tools might differ from how it's done on Windows, but both PHP and Eclipse are available as packages in Ubuntu.
Eclipse should run fine in Ubuntu.
Try some Java development in it to get yourself started.
Suggestions
Environment Setup
I would recommend you install a the JDK if you are doing Java development. Look here for instructions on using apt to install the sun JRE.
Then, get yourself a decent IDE setup. Try Netbeans or Eclipse - both can be configured to work with php as well.
Also make sure you install php and Apache, here are some instructions.
Since it sounds like you are going for the classic LAMP setup, you may as well install PostgreSQL or MySQL.
That should get you running far enough to make videos, etc useful.
Development Resources
IDE Resources
Java
- Java Antipatterns - Learn what not to do in Java.
- Apache Commons - Get libraries for common tasks in Java.
PHP
Since both Java and PHP are cross platform, it seems your biggest task would be to familiarize yourself with GNU/Linux and tools related to web development, apache web server in particular. Here are a few things google gave me:
http://www.micahcarrick.com/09-28-2007/web-development-linux.html
Have fun.
If you want to get your lamp setup pretty easily, you can take a look at Zend Server Community Edition. http://www.zend.com/products/server/downloads-all
For development eclipse (as suggested above) with PDT (Php development tools) is pretty good http://www.eclipse.org/pdt/. I prefer Netbeans though. You could also use gedit with some plugins see this
If I was to recommend one thing, it would be that you must learn to love the shell. It takes time to feel at home in, but it's well worth it.
On a related theme - You might want to consider using emacs or vim as your editor, but that's more of a personal preference thing. Some people just like IDE's better.
You should probably focus on PHP, rather than Java. It's easier to get started with and it's much more true to the Linux tradition (Whatever that means) than Java is.
Another option is Lazarus, which is based on Free Pascal, which itself is based on Delphi.
Lazarus allows you to develop using Object Oriented Pascal, across Linux, Windows and MacOSX and produces natively compiled executables on each target platform.
Natively compiled executables are generally much faster than interpreter based apps (i.e. Java, C#, PHP).
Lazarus use a component and event based approach to development which allows you to design GUI by dragging and dropping components on a Form Designer, which then are hooked through events.
Good luck with your programming adventures!
Ubuntu Pocket Guide
If you're new to Linux, I'd suggest you look at the Ubuntu Pocket Guide. It goes through basic stuff that any user would want to know - window management, system configuration, etc, as well as some historical background on Linux and Ubuntu. You can skim through that and learn a bit.
Bash Basics
Towards the end, it also explains the basics of bash, which is the Linux command line. That part is interesting - you can do a lot more in bash than you can do in the Windows command line. For example, you may be familiar with this Windows idiom:
dir > directorylist.txt
...which means, "list the contents of this folder, and instead of showing the output, put it in this file."
In Linux, you can do that, and you can also do piping, where you direct the output of one command into another. For example:
ls | grep foo
means "list the contents of this folder, and search through the output for the regular expression foo." You can add as many pipes as you want and use a variety of commands.
You can also use brace expansion to run multiple commands in sequence. For example,
mkdir photos_{france,spain,italy}
will create directories called photos_france, photos_spain, and photos_italy.
If you're going to be developing in Linux, you should invest the time to read some tutorials on bash to take full advantage of it.