Olá.
Este tópico visa mostrar aos "novatos" na programação java, como executar suas aplicações java diretamente no DoS (Windows) ou no terminal (Linux -
não testei mas acho que dá certo).
Não estou falando em abrir as aplicações gráficas pelo terminal, pois isso é feito pelo comando:
java -jar nome_do_arquivo.jar.
Estou me referindo em
mostrar sua aplicação em funcionamento dentro do terminal.
Bem, é claro que os mais experientes sabem disso, mas a minha intensão aqui é fazer com que aplicações em modo texto não sejam apenas para estudo e sim levadas a sério também.
Vocês novatos sabem que quando estão a desenvolver uma aplicação java, a IDE, no meu caso o BlueJ, abre as aplicações em modo texto em uma janela do terminal. Mas se pensam que ao criar o arquivos jar, as aplicações em modo texto serão executadas automaticamente, estão enganados. :P
O procedimento é bem simples.
Vamos ao nosso primeiro exemplo, o tão famoso
HelloWord.javaHelloWord.javaQuotepublic class HelloWord {
public static void main(String[] args) {
System.out.print("Ola, esta eh uma aplicacao em modo texto");
}
}
No BlueJ:(//http://i30.servimg.com/u/f30/11/80/81/44/hellow10.gif)
Para executar no terminal faça assim:Entre no diretódio onde está o jar de sua aplicação em modo texto com o comando
cd + o diretório onde a aplicação se encontra, depois utilize aquele
comando que eu mostrei, para abrir o jar:
java -jar nome_do_arquivo.jar(//http://i30.servimg.com/u/f30/11/80/81/44/hellow12.gif)
Mas pra trabalhar com aplicações desta maneira, você terá que "ralar" muito, pois não é nada agradável e não interage com o usuário. Mas sempre existirão pessoas que até uma planilha do Excel já resolve o caso :P
Vamos aos exemplos que podem ser usados além dos estudos:
______________________________________________________
Leitura de dados do usuárioresposta.javaQuoteimport java.util.Scanner;
public class resposta {
public static void main(String[] args) {
System.out.print("Digite uma mensagem: ");
Scanner scn = new Scanner(System.in);
String msg = scn.nextLine();
System.out.print("Sua mensagem foi: "+ msg);
}
}
No BlueJ:(//http://i30.servimg.com/u/f30/11/80/81/44/respos10.gif)
No terminal:(//http://i30.servimg.com/u/f30/11/80/81/44/respos11.gif)
(//http://i30.servimg.com/u/f30/11/80/81/44/respos12.gif)
Setar notas e calcular médiasAvaliacao.javaQuote// interface
public interface Avaliacao {
void setAvaliacao(double avaliacao);
double getResultado();
String getConceito();
}
Universidade.javaQuotepublic class Universidade implements Avaliacao {
private int codigoUniversidade;
private double pontos = 0;
public Universidade(int c) {
codigoUniversidade = c;
}
public int getCodigo() {
return codigoUniversidade;
}
public void setAvaliacao(double avaliacao) {
pontos = pontos + avaliacao;
}
public double getResultado() {
return pontos;
}
public String getConceito() {
if (pontos > 1000)
return "Ensino de alta qualidade!";
else if (pontos > 700)
return "Ensino de media qualidade!";
else
return "Ensino de baixa qualidade!";
}
}
ProgramaTV.javaQuotepublic class ProgramaTV implements Avaliacao {
private String titulo;
private double maiorAudiencia = 0;
public ProgramaTV(String t) {
titulo = t;
}
public String getTitulo() {
return titulo;
}
public void setAvaliacao(double avaliacao) {
if (avaliacao > maiorAudiencia)
maiorAudiencia = avaliacao;
}
public double getResultado() {
return maiorAudiencia;
}
public String getConceito() {
if (maiorAudiencia > 5000)
return "Otima audiencia!";
else if (maiorAudiencia > 3000)
return "Boa audiencia!";
else
return "Audiencia regular!";
}
}
Aluno2.javaQuotepublic class Aluno2 implements Avaliacao {
private String nome;
private int contador = 0;
private double soma = 0;
public Aluno2(String _nome) {
nome = _nome;
}
public String getNome() {
return nome;
}
public void setAvaliacao(double avaliacao) {
soma = soma + avaliacao;
contador++;
}
public double getResultado() {
return soma / contador;
}
public String getConceito() {
if (soma / contador >= 6)
return "Aprovado";
else
return "Reprovado";
}
}
ExemploMain.javaQuotepublic class ExemploMain {
public static void main(String[] args) {
Aluno2 aluno2 = new Aluno2("Joao");
Universidade uni = new Universidade(1423);
ProgramaTV prog = new ProgramaTV("Jornal do Dia");
aluno2.setAvaliacao(6);
aluno2.setAvaliacao(7);
aluno2.setAvaliacao(5);
uni.setAvaliacao(300);
uni.setAvaliacao(250);
uni.setAvaliacao(200);
prog.setAvaliacao(800);
prog.setAvaliacao(950);
prog.setAvaliacao(1000);
System.out.println(aluno2.getNome()+ " tem media = " +aluno2.getResultado());
System.out.println(aluno2.getNome()+ " obteve conceito " +aluno2.getResultado());
System.out.println(uni.getCodigo()+ " obteve pontos = " +uni.getResultado());
System.out.println(uni.getCodigo()+ " tem conceito = " +uni.getConceito());
System.out.println(prog.getTitulo()+ " tem audiencia = " +prog.getResultado());
System.out.println(prog.getTitulo()+ " tem conceito = " +prog.getConceito());
}
}
No Bluej:(//http://i30.servimg.com/u/f30/11/80/81/44/aluno210.gif)
No terminal:(//http://i30.servimg.com/u/f30/11/80/81/44/aluno010.gif)
Árvore BináriaABB.javaQuotepackage ABB;
public class ABB {
/* Inicio da Classe NoABB */
public class NoABB {
// definicao dos atributos da classe NoABB
private Comparable dado;
private NoABB esq,dir;
//Construtor da Classe NoABB
public NoABB(Comparable novoDado) {
this.dado = novoDado;
this.esq = null;
this.dir = null;
}
public void insere(Comparable novoDado){
if (novoDado.compareTo(dado) > 0){
// Se novo dado > dado do no
if (dir == null) // verifica se tem filho a direita
dir = new NoABB(novoDado); // insere novo a direita
else
dir.insere(novoDado); // chama insere no ramo direito
} else if (novoDado.compareTo(dado) < 0){
//se novo dado < dado do no
if (esq == null) // verifica se tem filho a esquerda
esq = new NoABB(novoDado); // insere novo a esq
else
esq.insere(novoDado); // chama insere no ramo esq
}
}
// localiza o no com maior valor neste ramo da arvore
protected NoABB Maior(){
if (dir == null)
return this;
NoABB maior = dir;
while (maior.dir != null)
maior = maior.dir;
return maior;
}
} // Fim da Classe NoABB
/* continuação da Classe ABB */
// definicao do atributo da classe ABB
protected NoABB raiz;
// construtor da classe ABB
public ABB(){
this.raiz = null;
}
// Busca um dado e retorna a referencia ao no ou null
public NoABB busca(Comparable dado){
NoABB raizSubArv = raiz;
NoABB retorno = null;
while (raizSubArv != null && retorno == null) {
if (dado == raizSubArv.dado)
retorno = raizSubArv;
else {
if (dado.compareTo(raizSubArv.dado) < 0)
raizSubArv = raizSubArv.esq;
else
raizSubArv = raizSubArv.dir;
}
}
return retorno;
}
// localiza o nó pai do dado recebido e retorna sua referencia
protected NoABB buscaPai(Comparable dado){
NoABB raizSubArv = raiz;
NoABB retorno = null;
while (raizSubArv != null && retorno == null) {
if (raizSubArv.esq != null){
if (dado == raizSubArv.esq.dado)
retorno = raizSubArv;
}
if (raizSubArv.dir != null){
if (dado == raizSubArv.dir.dado)
retorno = raizSubArv;
}
if (retorno == null){
if (dado.compareTo(raizSubArv.dado) < 0)
raizSubArv = raizSubArv.esq;
else
raizSubArv = raizSubArv.dir;
}
}
return retorno;
}
/*
* Retorna 0 se não tiver filhos.
* 1 se só tiver o filho da direita
* 2 se só tiver o filho da esquerda
* 3 se tiver os dois filhos
*/
int getNumeroFilhos(NoABB no) {
return (no.dir != null ? 1:0) + (no.esq != null ? 2:0);
}
// Metodo para remover um no da ABB
public void remove(Comparable dado){
// busca o no a ser excluido
NoABB noExcluir = busca(dado);
if (noExcluir == null) // se nao achou dado nao remove
return; // abandona o metodo
NoABB paiExcluido = null;
if (noExcluir != raiz)
paiExcluido = buscaPai(noExcluir.dado); // busca pai
switch(getNumeroFilhos(noExcluir)) {
case 0: // nenhum filho, e uma folha
if (noExcluir != raiz){
if (paiExcluido.esq == noExcluir) //Elimina ligacao
paiExcluido.esq = null;
if (paiExcluido.dir == noExcluir) //Elimina ligacao
paiExcluido.dir = null;
}else{ //se no a excluir for a raiz da arvore, elimina a raiz
raiz = null;
}
break;
case 1: // se tiver apenas 1 filho, a direita ou a esquerda,
case 2: // o tratamento será o mesmo
if (noExcluir != raiz){
if (paiExcluido.esq == noExcluir ){ //Elimina ligacao
if (noExcluir.dir != null)
paiExcluido.esq = noExcluir.dir;
else
paiExcluido.esq = noExcluir.esq;
}
if (paiExcluido.dir == noExcluir){ // Elimina ligacao
if (noExcluir.dir != null)
paiExcluido.dir = noExcluir.dir;
else
paiExcluido.dir = noExcluir.esq;
}
} else { // se nó a excluir for a raiz da arvore
if (raiz.esq != null)
raiz = raiz.esq;
else
raiz = raiz.dir;
}
break;
case 3: // tem os dois filhos.
NoABB maiorEsquerda = noExcluir.esq.Maior();
if (noExcluir.esq != maiorEsquerda){
NoABB paiMaiorEsquerda = buscaPai(maiorEsquerda.dado);
paiMaiorEsquerda.dir = maiorEsquerda.esq;
noExcluir.dado = maiorEsquerda.dado;
} else {
noExcluir.dado = noExcluir.esq.dado;
noExcluir.esq = noExcluir.esq.esq;
}
}
}
public void insere(Comparable dado){
if (raiz == null)
raiz = new NoABB(dado);
else
raiz.insere(dado);
}
protected void preOrdem(NoABB no){
if (no != null){
System.out.print(no.dado + " ");
preOrdem(no.esq);
preOrdem(no.dir);
}
}
public void preOrdem(){
preOrdem(raiz);
}
protected void inOrdem(NoABB no){
if (no != null){
inOrdem(no.esq);
System.out.print(no.dado + " ");
inOrdem(no.dir);
}
}
public void inOrdem(){
inOrdem(raiz);
}
protected void posOrdem(NoABB no){
if (no != null){
posOrdem(no.esq);
posOrdem(no.dir);
System.out.print(no.dado + " ");
}
}
public void posOrdem(){
posOrdem(raiz);
}
}
Main.javaQuotepackage ABB;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
ABB arvore = new ABB();
int opcao = 0;
Scanner scn = new Scanner(System.in);
String msg, msg2;
do {
System.out.println("1) Insere");
System.out.println("2) Remove");
System.out.println("3) Busca dado");
System.out.println("4) Pre-Ordem");
System.out.println("5) In-Ordem");
System.out.println("6) Pos-Ordem");
System.out.println("0) Sair");
System.out.println("Digite a opcao:");
msg = scn.nextLine();
opcao = Integer.parseInt(msg);
switch(opcao) {
case 1:
System.out.println("Digite o dado a ser inserido: ");
msg = scn.nextLine();
arvore.insere(Integer.parseInt(msg));
break;
case 2:
System.out.println("Digite o dado a ser removido: ");
msg = scn.nextLine();
arvore.remove(Integer.parseInt(msg));
break;
case 3:
System.out.println("Digite o dado a ser buscado: ");
msg = scn.nextLine();
if (arvore.busca(Integer.parseInt(msg)) == null)
System.out.println("Dado nao encontrado!");
else
System.out.println("Dado encontrado!");
break;
case 4:
System.out.println("Dados em Pre-Ordem");
arvore.preOrdem();
System.out.println();
break;
case 5:
System.out.println("Dados em In-Ordem");
arvore.inOrdem();
System.out.println();
break;
case 6:
System.out.println("Dados em Pos-Ordem");
arvore.posOrdem();
System.out.println();
break;
}
} while(opcao != 0);
}
}
No BlueJ:(//http://i30.servimg.com/u/f30/11/80/81/44/abb10.gif)
No terminal:(//http://i30.servimg.com/u/f30/11/80/81/44/abb00210.gif)
Conexão com o banco de dadosEsse é o foco do tópico!selectBD.javaQuote/**
* CREATE TABLE rest_web.administrador (
cod int(8) NOT NULL auto_increment primary key,
login varchar(11) default NULL,
senha varchar(11) default NULL,
nome varchar(64) default NULL,
dtultimoacesso date default NULL,
);
*/
import java.sql.*;
public class selectBD {
static Connection con;
static Statement stmt;
static ResultSet rs;
public static void main(String[] args) {
try {
Class.forName("org.gjt.mm.mysql.Driver");
String url = "jdbc:mysql://localhost/rest_web";
String user = "root";
String pass = "2017";
con = DriverManager.getConnection(url, user, pass);
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT * FROM administrador");
rs.next();
System.out.println("Codigo: " +rs.getString("cod"));
System.out.println("Login: " +rs.getString("login"));
System.out.println("Senha: " +rs.getString("senha"));
System.out.println("Nome: " +rs.getString("nome"));
System.out.println("Data do ultimo acesso: " +rs.getDate("dtultimoacesso"));
stmt.close();
con.close();
} catch(ClassNotFoundException cnfex) {
System.out.println("Driver nao encontrado! " +cnfex);
} catch(SQLException sqlex) {
System.out.println("Erro: " +sqlex);
}
}
}
No Bluej:(//http://i30.servimg.com/u/f30/11/80/81/44/databa10.gif)
No terminal:(//http://i30.servimg.com/u/f30/11/80/81/44/databa11.gif)
Você pode baixar os exemplos estudados neste tópico e apenas testá-los no terminal:
HelloWord (//http://triplox.webcindario.com/darkers/java/java_modo_texto/HelloWord.jar) | Aluno2 (//http://triplox.webcindario.com/darkers/java/java_modo_texto/aluno2.jar) | resposta (//http://triplox.webcindario.com/darkers/java/java_modo_texto/resposta.jar) | database (//http://triplox.webcindario.com/darkers/java/java_modo_texto/database.zip) | ABB (//http://triplox.webcindario.com/darkers/java/java_modo_texto/ABB.jar)
QuoteCom este tópico, espero ter incentivado os novatos a programarem em java. 
Até a próxima...