Open Source adalah suatu sistem yang memberikan kode software dalam dunia komputer khususnya dan Teknologi Informasi pada umumnya yang memberikan kepada pengguna kode sumber dari software tersebut sehingga orang lain bisa mengetahui dengan bahasa program apa software tersebut dibuat dan apa kelebihan dan kekurangan dari software tersebut dengan melihat kode yang ada. Sehingga dengan sistem ini akan menjadikan software tersebut setidaknya sedikit sekali memiliki kelemahan dikarenakan banyak yang melihat kode tersebut dan melakukan perbaikan dan penyempurnaan. Dan siapa saja boleh melakukan perbaikan dan penyempurnaan pada software tersebut.
Berbeda sekali dengan Close Source yang sangat tertutup. Sehingga orang lain tidak akan bisa mengetahui dengan apa program tersebut dibuat dan bagaimana jika terjadi kesalahan pada software tersebut. Sehingga jika terdapat kesalahan program orang tersebut harus menghubungi pihak yang bersangkutan dengan pembuatan software tersebut dan hal ini jelas-jelas memakan waktu yang lama dan biaya yang tidak sedikit.
Suatu program dengan lisensi Open Source berarti program tersebut membuka Kode Programnya bagi siapa saja yang ingin mempelajarinya, caranya dengan menyertakan kode program bersama dengan distribusi paket program yang sudah jadi (hasil kompilasi). Dengan penyertaan kode program tersebut, pembeli atau pengguna program dapat membedah program tersebut, melakukan modifikasi sesuai dengan kebutuhannya, bahkan memperbaiki -Bug- atau kesalahan logika dalam program tersebut. Contoh program yang Open Source adalah Linux. Dalam setiap distribusinya vendor Linux juga menyertakan Kode Program Linux.
Satu hal yang perlu ditekankan adalah bahwa program / software yang Open Source tidak selalu tersedia secara gratis. Tetap ada biaya yang dikeluarkan untuk membeli program tersebut. Contoh, misalnya Sistem Operasi RedHat Linux, program Linuxnya tetap dibeli dengan harga yang murah. Lalu, apa bedanya Open Source dengan -Closed Source-
Pada program yang -Closed Source-, paket program tidak dapat didistribusikan lagi selain oleh pembuat / vendor program tersebut. Jika ada distribusi yang bukan oleh vendor program tersebut, maka itu dianggap sebagai pembajakan software. Atau dengan kata lain program yang -Closed Source- tidak dapat didistribusikan secara bebas, kecuali oleh vendor program tersebut. Sedangkan software yang Open Source, dapat didistribusikan secara bebas oleh siapapun. Paket program juga dapat digandakan secara bebas.
Tujuan Open Source sebenarnya adalah ingin menghilangkan ketergantungan terhadap vendor program, dimana vendor bisa saja bertindak seenaknya. Dalam program yang -Closed Source- vendor bisa saja menyisipkan kode – kode yang mungkin dapat membahayakan pengguna program, dan menghilangkan privasi pengguna.
Contoh Script Dengan Bahasa Pemrograman Java
package processor;
import java.awt.Color;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.text.BadLocationException;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
import javax.swing.text.rtf.RTFEditorKit;
class fileItem extends javax.swing.JFileChooser
{
File fFile=null;
public void getPath()
{
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory( new File( ".") );
int actionDialog = chooser.showSaveDialog(this);
if ( actionDialog == JFileChooser.APPROVE_OPTION )
{
fFile=chooser.getSelectedFile().getAbsoluteFile();
}
}
public File getFile()
{
return fFile;
}
}
// AKHIR CLASS FILE ITEM
// AWAL CLASS PEMBUKA FILE
class pembukaFile
{
FileInputStream fi;
public FileInputStream bukaFile(File fFile) throws FileNotFoundException
{
fi=new FileInputStream(fFile);
return fi;
}
}
// AKHIR CLASS PEMBUKA FILE
// AWAL CLASS PENYIMPAN FILE
class penyimpanFile
{
FileOutputStream out;
public FileOutputStream simpanFle(File fFile) throws FileNotFoundException
{
out=new FileOutputStream(fFile);
return out;
}
}
// AKHIR CLASS PENYIMPAN FILE
// AWAL CLASS PENGATUR FONT
class pengaturFont
{
MutableAttributeSet atr;
public void setFontColor(Color c, int first,int sellength,StyledDocument doc)
{
atr = new SimpleAttributeSet();
StyleConstants.setForeground(atr, c);
doc.setCharacterAttributes(first, sellength, atr, false);
}
public void setFont(boolean bold,boolean italic,boolean underline,int first,int sellength,StyledDocument doc)
{
atr = new SimpleAttributeSet();
StyleConstants.setBold(atr,bold);
StyleConstants.setItalic(atr, italic);
StyleConstants.setUnderline(atr, underline);
doc.setCharacterAttributes(first, sellength, atr, false);
}
public void setFontStyle(String style,int first,int sellength,StyledDocument doc)
{
atr = new SimpleAttributeSet();
StyleConstants.setFontFamily(atr, style);
doc.setCharacterAttributes(first, sellength, atr, false);
}
public void setFontSize(int size,int first,int sellength,StyledDocument doc)
{
atr = new SimpleAttributeSet();
StyleConstants.setFontSize(atr, size);
doc.setCharacterAttributes(first, sellength, atr, false);
}
}
//AKHIR CLASS PENGATUR FONT
// AWAL CLASS PENGATUR PARAGRAPH
class pengaturParagraph
{
protected MutableAttributeSet atr;
public pengaturParagraph()
{
atr = new SimpleAttributeSet();
}
public void setParagraphLeft()
{
StyleConstants.setAlignment(atr,StyleConstants.ALIGN_LEFT);
}
public void setParagraphRight()
{
StyleConstants.setAlignment(atr,StyleConstants.ALIGN_RIGHT);
}
public void setParagraphCenter()
{
StyleConstants.setAlignment(atr,StyleConstants.ALIGN_CENTER);
}
public void setSpasiParagraph(float spasi)
{
StyleConstants.setLineSpacing(atr, spasi);
}
public MutableAttributeSet getAtribut()
{
return atr;
}
public void setAttribute(StyledDocument doc)
{
doc.setCharacterAttributes(0,doc.getLength()+1, atr, false);
}
public void setAttributeSpasi(int first,int sellength, StyledDocument doc)
{
doc.setCharacterAttributes(first, sellength, atr, false);
}
}
// AKHIR CLASS PENGATUR PARAGRAPH
// AWAL CLASS PENGHITUNG ISI FILE
class penghitungIsiDokumen
{
int numChar = 0;
int numLine=0;
public int wordCount(String isi)
{
int numWords = 0;
int index = 0;
boolean prevWhiteSpace = true;
while(index < isi.length()){
char c = isi.charAt(index++);
boolean currWhiteSpace = Character.isWhitespace(c);
//boolean currWhiteSpace = Character.
if(prevWhiteSpace && !currWhiteSpace){
numWords++;
}
prevWhiteSpace = currWhiteSpace;
}
return numWords;
}
public int sentenceCount(String isi)
{
int numSentence=0,index=0;
while(index < isi.length()){
char c = isi.charAt(index++);
boolean currDot =isDot(c);
if(currDot==true){
numSentence++;
}
}
return numSentence;
}
public int paragraphCount(String isi)
{
int numParagraph=1,index=0;
KeyEvent e = null;
if(isi==null)
{
return 0;
}
while(index < isi.length()){
char c = isi.charAt(index++);
boolean currDot =isEnter(c,e);
if(currDot==true){
numParagraph++;
}
}
return numParagraph;
}
private boolean isDot(char c)
{
String titik;
titik=Character.toString(c);
if(titik.equals("."))
{
return true;
}
else
{
return false;
}
}
private boolean isEnter(char c, KeyEvent e)
{
int code;
code=(int)c;
if(code==KeyEvent.VK_ENTER)
{
return true;
}
else
{
return false;
}
}
}
//AKHIR CLASS PENGHITUNG ISI FILE
public class myWordProcessorPanel extends javax.swing.JFrame {
RTFEditorKit rtf;
fileItem fItem;
pembukaFile fileBuka;
penyimpanFile fileSimpan;
pengaturFont aturFont;
pengaturParagraph aturParagraph;
File fFile=null;
FileInputStream fi;
FileOutputStream fo;
int first=0,last=0,panjang=0;
/** Creates new form myWordProcessorPanel */
public myWordProcessorPanel() {
initComponents();
rtf = new RTFEditorKit();
fileBuka=new pembukaFile();
fileSimpan=new penyimpanFile();
aturFont=new pengaturFont();
aturParagraph=new pengaturParagraph();
editor.setEditorKit(rtf);
editor.setVisible(false);
}
public void open() throws FileNotFoundException, IOException, BadLocationException
{
fItem=new fileItem();
fItem.getPath();
fFile=fItem.getFile();
if(fFile!=null)
{
fi=fileBuka.bukaFile(fFile);
rtf.read(fi, editor.getDocument(), 0);
}
}
public void save() throws FileNotFoundException, IOException, BadLocationException
{
StyledDocument doc;
doc= (StyledDocument) editor.getDocument();
fItem=new fileItem();
fItem.getPath();
fFile=fItem.getFile();
if(fFile!=null)
{
fo=fileSimpan.simpanFle(fFile);
rtf.write(fo, doc,doc.getStartPosition().getOffset(),doc.getLength());
}
}
public void setSelection()
{
first=editor.getSelectionStart();
last=editor.getSelectionEnd();
panjang=last-first;
}
public void style()
{
String style;
if(comboStyle.getSelectedItem()=="Arial")
{
style="Arial";
}
else if(comboStyle.getSelectedItem()=="Calibri")
{
style="Calibri";
}
else if(comboStyle.getSelectedItem()=="Cambria")
{
style="Cambria";
}
else if(comboStyle.getSelectedItem()=="Sanserif")
{
style="Sanserif";
}
else
{
style="Arial";
}
setSelection();
aturFont.setFontStyle(style, first, panjang,(StyledDocument) editor.getDocument());
}
public void Size()
{
int size=0,i=11;
String combo=(String) comboSize.getSelectedItem();
int ukuran=Integer.parseInt(combo);
while(i<=25)
{
if(i==ukuran)
{
size=i;
break;
}
i++;
}
setSelection();
aturFont.setFontSize(size, first, panjang,(StyledDocument) editor.getDocument());
}