Unix/Linux Development Tools
Shells (command interpreters)
#!/bin/THE_SHELL_COMMAND
- sh: Bourne Shell - the standard shell ($)
if [ -f /etc/passwd ]
then
echo "Found it!"
fi
- csh/tcsh: C-like sh (%) ($HOME/{.cshrc,.login})
alias a alias
a host hostname
a pwd 'echo $cwd'
a p less
source .cshrc
- ksh: Korn Shell which is based upon sh ($HOME/.profile)
host=hostname
pwd='echo $cwd'
p=less
./.profile
-
bash: incorporates useful features from ksh and csh.
You may also
this programming help.
Editors
Programming Languages
-
GNU: C (gcc), and C++ (g++) compiler
-
Perl: an interpreted language optimized for scanning arbitrary
text files, extracting information from those text files, and
printing reports based on that information. It's also a good
language for many system management tasks because of
its excellent regular expression feature.
It combines some of the best features of C,
sed,
awk, and sh from Unix.
- tcl/tk: Tool Command Language
provides a parser for a simple textual command language; a collection
of builtin utility commands, and a C interface. Tcl is particularly
attractive when integrated with the widget library of a window system;
and it offers a simple but powerful communication
mechanism between interactive programs.
- Python: an interpreted,
interactive, object-oriented programming language. It is also
good for GUI programming and easier to read than Perl.
There is an excellent
tutorial which has a section discussing the
comparison with other scripting languages.
-
PHP:
an HTML-embedded scripting language for writing
dynamically generated pages. It adopts Java and Perl syntax.
For adding to Apache, you may check
check.
-
Bison and
Flex (vs. Yacc and Lex): parser and lexer which are used
for building compilers and interpreters.
They also have a wider range of applications such
simple desk calculator and pattern matching on text.
- Java:
A high-level object-oriented programming language.
Java was originally called OAK, and was designed for handheld devices
and set-top boxes. Oak was unsuccessful so in 1995 Sun changed the
name to Java and modified the language to take advantage of the
burgeoning World Wide Web. Java compiler will compile
a Java code into an architecture-independent distribution format
called bytecode which can be transferred over
the network and executed by
Java Virtual Machine.
You may refer to this
tutorial to install one of the following
implements of Java:
Debuggers that are either free or come with products (IDE) such as
Unix dbx, GNU
gdb, and Java jdb.
Autoconfig and Make
Autoconf is a set of tools (autoconf, autoheader, autoscan, autoreconf,
autoupdate, ifnames) which helps make your code configurable and
portable to various versions of UNIX.
Autoconf generates
makefile
as an input to
make which
executes a list of shell commands associated with each
target, typically to create or update a file of the same
name. Many freeware packaged with autoconf allows simplified
procedures for making targets (programs) and installation.
$CatCommand $CompressedFile | (cd /usr/src; tar xf -)
where $CatCommand could be zcat (use GNU
zcat which works with .Z and .gz format) or
bz2cat (for bzip files using
Burrows-Wheeler block-sorting text compression algorithm, and
Huffman coding.) See GNU
gzip and
tar documentations for details.
./configure
make
make install
SCCS, RCS, CVS, and PRCS
Source Code Control System and Revision Control System
are most popular low-cost "Configuration Management" (CM)
tools in the Unix world.
They basically are used to keep track of text file. They typically
contain multiple (older) revisions of
text, an access list, a change log, descriptive text, and
some control attributes. SCCS comes with
Unix system. RCS is a freeware version that does better job
than SCCS.
Concurrent Versions System (CVS) is a set of tools
on top of SCCS/RCS for keeping track of collections of files in a shared
directory called "The Repository" with client/server model.
Both SCCS and RCS created a
history with suffix "s." and ",v" in the same directory
of the file being worked on. Check in and out are done against
the SCCS/RCS files. Like CVS,
Project Revision Control System (PRCS) is another
system developed in UCB. It uses RCS as the back-end system.
There is a
tutorial for a quick start. Unlike CVS, PRCS does not implement
the client/server model (yet). For more information, you may
read the
comparison between CVS and PRCS. Of course, there are commercial
packages such as OpenMake/Harvest, ClearCase and SOS.
Note: a true configuration management system
would contain elements of the following:
- Source control
- Dependency tracking
- Build systems (i.e. What to build and how to find
things during a build. What is shared? What is local?)
- Bug tracking
- Automated Testing procedures
- Release Engineering documentation and procedures
- Tape/CD-ROM/Floppy Construction
- Customer Installation: A way for users to run
different versions of the same
software on the same host at the same time
CVSup:
a software package for distributing and updating collections of files across a network. It can
efficiently and accurately mirror all types of files, including sources,
binaries, hard links, symbolic links, and
even device nodes. It also includes special features and optimizations
specifically tailored to CVS repositories.
Database
- Mini SQL (mSQL):
a light weight relational database management system with
very little overhead. It also offers
a scripting language named Lite which works with mSQL. w3-mSQL is
also available for rapid web application development
- MySql:
true multi-user, multi-threaded SQL database server.
For integrate with Apache refers to
Developing Web Applications at Home, and
this tutorial.
- PostgreSQL: an object-relational
DBMS. It supports almost all SQL constructs,
including subselects, transactions, and user-defined types
and functions. It is the most advanced open-source database available.
- Leap:
an educational free RDBM tool around the world to help students,
researchers and teachers to study and teach databases.
Graphics User Interface
The GUI war (X against Sun's NeWS) in the Unix field ended
after X consortium now named
X.org
released MIT's X Window systems (X - for short) back in 1986.
-
Motif:
the industry standard graphical user interface and
the leading user interface for the UNIX. (CDE)
-
LessTif: the
Hungry Programmers'
version of OSF/Motif.
- GNU Image Manipulation Program. (Gimp):
a freely distributed software suitable for such tasks as photo
retouching, image composition and image authoring. You may
refer to this
-
tutorial.
- GTK+:
an Open Source Free Software GUI Toolkit based upon Gimp. See
the Tutorial for guideness.
Integrated Development Environment (IDE)
-
JBuilder is free for Linux, Solaris and WinNT
-
FreeBuilder:
a FREE, visual programming environment based on
Java (JFC/Swing). It runs on any platform that
supports JDK 1.1.x and JDK 1.2.x,
including Win9[58]/NT, Linux, Solaris and Mac.
-
jBuilder:
a FREE IDE ready for
download.
-
VisualAge:
a full-featured IDE that allows developers to
create Java applications, applets, and JavaBeans, and
provides the features that enable you to perform a wide
range of Java programming tasks. It includes "Open Tools Integrator API"
which makes it possible to integrate non-VisualAge development tools.
- NetBeans:
supports Swing and it runs on all platforms that support JDK 1.[12],
including Windows 9[58]/NT, Linux, Solaris, HP-UX, and others.
-
BlueJ (Free):
object-oriented IDE which allows users to
interact and visualizes with classes and objects.
-
AnyJ: includes version control
tool, advanced code completion, and HelpAgent to display JavaDoc
on a method level.
-
CodeFusion:
optimized for Intel Architecture and combines the
latest GNU tools release (compilers, debuggers, libs, utils).
- Simplicity for Java:
able to drop Java Layouts, AWT Components,
its own extended components, Swing Components and third
party Java Beans into an application.
- CodeGuide:
the first really intelligent Java IDE. Its on-the-fly code
analysis is unique in the world. CodeGuide analyses your programs as
you type, shows you errors instantaneously and gives you powerful
programming assistance.
- JDesignerPro:
combines a production-grade application server with
advanced tools for rapid development and deployment.
It also includes a robust screen designer, wizards and SQL
builder.
- Cafe:
the first graphics environment/debugger for Java.
Cafe automates various small, and onerous chores.
- Elixir:
contains built-in Incremental Obfuscator which also
optimizes your byte code, Build Engine to automate multi-step build
cycle, Inspector, multiple scripting languages including a Java
interpreter, plus many more innovative features. All Elixir IDE
files are either plain text or
XML
allowing users to leverage the project files with other custom tools and
not having to re-enter all the project information.
Pros
- Easier to learn - GUI shortens learning curve.
- Multiple views of your work at the project, class, or
method level, with appropriate tools associated with
each level.
- Comes with visual editor.
Cons
- Limited choice of development tools: won't integrate with Emacs.
-
Single process problems: If individual component (such as the debugger)
crashes, it creates a chain-reaction and the developer is forced
to reopen all the files.
-
project management systems: own built-in CM tool.
-
GUI avoidance: makes sufficiently complicated
task either difficult or impossible.
References:
Tools
IDEs
DB2
JavaTools
XML Parsers
Oracle8i
WebOpedia
GNU Manuals
Linux Java from Sun
Perl Monks
Linux Programming
Java Tools Comparison
Linux DBMS Comparison
How To Write Unmaintainable Code
Emacs-Beginner-HOWTO
Programming Help Sessions
More Java Programming Help Sessions
Data Structures and Algorithms in Java
Perl and Apache
SourceForge
Cgi-lib
Jini
Python
Diary
MySql
Savannah
IBM
Servlet
WebScripts
Cgi
Jgraph
MySQL(1)
MySQL(2)