UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO TECNOLÓGICO DEPARTAMENTO DE INFORMÁTICA 2° CURSO DE JAVA - TECNOLOGIAS E DESENVOLVIMENTO DE SISTEMAS (Pós-Graduação Lato-Sensu – Nível de Especialização) Vitória-ES, Janeiro de 2009 Projeto de curso conforme Res. 25/95 CEPE (REGULAMENTO GERAL DA PÓSGRADUAÇÃO) e Res. 24/2008 CONSUNI (NORMAS FINANCEIRAS E ADMINISTRATIVAS PARA O FUNCIONAMENTO DOS CURSOS DE PÓSGRADUAÇÃO LATO-SENSU). Elaboração do projeto: Prof. Dr. Thomas Walter Rauber, DI/CT/UFES Prof. Dr. Flávio Miguel Varejão, DI/CT/UFES Ordenador de despesas: Diretor(a) do Centro Tecnológico (atualmente Prof. Dr. Gilberto Costa Drumond Sousa, CT/UFES) Fiscal de projeto: Prof. Dr. Orivaldo de Lira Tavares, DI/CT/UFES I. Dados de Identificação1 a) Nome do Curso: 2° Curso de Java – Tecnologias e Desenvolvimento de Sistemas b) Órgão Proponente: Departamento de Informática, CT, UFES c) Tipo: Especialização 390 d) Carga Horária Total: e) Número de Turmas: horas de aula 01 (uma) turma 45 f) N° Total de Vagas: alunos regulares 40 para ( e 5 para bolsistas) 24/04/09 g) Período de Realização: a 31/10/10 h) Nome e Endereço da Coordenação do curso: i. Geral: Pró-Reitoria de Pesquisa e Pós-Graduação, UFES ii. Técnica: Profa. Maria Christina Pedrosa Valli Rauber, DI/CT/UFES, Av. Fernando Ferrari s/n, Goiabeiras, 29060-970 Vitória, ES i) Local de Funcionamento do Curso: Sala de aulas nas dependências do Centro Tecnológico da UFES e laboratório de graduação do Departamento de Informática, CT, UFES 1 Alguns dos dados no projeto são vínculos simbólicos da planilha de cálculo associada ao projeto e podem aparecer em tamanho, cor e fonte diferente. II. Justificativa A linguagem de programação JAVA se tornou uma poderosa ferramenta de desenvolvimento de aplicações que se caracterizam por exigências relativas a portabilidade, distribuição e segurança. A gama de ambientes de funcionamento tanto na natureza dos dispositivos envolvidos, como os tipos de programas é extremamente variada. Acessar uma página na Internet via um telefone celular, implementar uma loja virtual, operações bancárias ou a programação de dispositivos emergentes é feito em Java. A filosofia principal do ambiente de execução é a existência de uma máquina virtual que executa comandos da linguagem, seja onde essa máquina esteja fisicamente situada. Em decorrência de ser um software distribuído gratuitamente, desconsiderando sistemas operacionais ou produtores de hardware e baseando-se no paradigma de orientação a objetos, Java ganha cada vez mais usuários e desenvolvedores. Observa-se que grandes empresas adotam parcialmente ou totalmente Java para resolver os seus problemas de tecnologia de informação. Especialistas de programação que dominam Java beneficiam a indústria de software pelas capacidades de criação de programas de qualidade, usuários dos sistemas desenvolvidos pela segurança e robustez da aplicação e a economia em geral por serem profissionais altamente produtivos. Cabe a instituições competentes onde haja know-how relevante a formação de recursos humanos especializados. Nesse contexto se coloca a proposta deste curso, unindo conhecimento atualizado e profundo da linguagem Java e suas aplicações, ministrados por professores principalmente ligados ao Centro Tecnológico da UFES, mais precisamente ao Departamento de Informática. III. Organização do Curso a) Objetivos O conteúdo do curso visa o ensino da linguagem Java em si com a sintaxe e mecanismos específicos de programação, módulos específicos que cobram aspectos selecionados como acesso a banco de dados ou comunicação distribuída até ambientes complexos de aplicações como J2EE. b) Clientela Profissionais de tecnologia de informação que programam em Java e querem aprofundar o seu conhecimento, programadores que querem abrir o seu leque de técnicas e linguagens de programação, recém-graduados que querem atingir um nível de conhecimento comparável aos profissionais com experiência. Recomendável ao candidato é que seja graduado em curso com base tecnológica (engenharias, ciência da computação, matemática, etc.) bem como pessoal graduado em outros cursos com experiência anterior na área de desenvolvimento de sistemas. c) Calendário do curso: período de realização, com datas, dias da semana, horário das aulas e demais atividades do curso As aulas terão 4 (quatro) horas de duração no período noturno, das 18:30 às 22:30 horas, e 6 (seis) horas de duração no período diurno, das 08:00 às 14:00 h. As aulas do período noturno serão realizadas sempre às sextas-feiras. As aulas no período diurno serão realizadas apenas aos sábados. Terá um coffee-break com lanche e bebidas em dias de aula, cujo custo está incluído na mensalidade. Datas: Veja anexo d) Número de vagas com previsão de bolsas 45 ( 40 para alunos O número de vagas é fixado em 5 para bolsistas, i.e. no mínimo 10% para bolsistas), regulares e conforme Art. 13, Res. 24/2008 CONSUNI. As vagas de bolsistas serão destinadas a professores e funcionários graduados da UFES. Os bolsistas da UFES ficarão isentos do pagamento integral das mensalidades do curso; no entanto, estarão, assim como os demais alunos, sujeitos às regras acadêmicas estabelecidas pelos Conselhos Superiores da UFES para aprovação nas disciplinas e freqüência (vide adiante). Além do currículo, os candidatos à bolsa deverão apresentar documento assinado pela chefia imediata contendo indicação e justificativa para participação no curso. A seleção dos bolsistas ficará a cargo da Coordenação Técnica, e será feita mediante análise curricular e das justificativas apresentadas. Os bolsistas deverão, obrigatoriamente, prestar atividades de suporte (manutenção da rede, desenvolvimento de páginas, desenvolvimento de aplicativos, etc.) junto ao Departamento de Informática da UFES durante o período de duração do curso com uma dedicação máxima de 20 horas mensais, veja Art. 13, Parágrafo único, Res. 24/2008 CONSUNI. e) Requisitos e período previsto para inscrição Conforme Art. 59, Res. 25/95 CEPE portadores de diploma de curso de graduação em áreas relacionadas à informática (Ciência da Computação, Engenharia de Computação, Sistemas de Informação, Matemática, Engenharias ou áreas afins) ou excepcionalmente, de forma condicionada, alunos que estejam cursando o último semestre de seu curso de graduação, ficando cientes de que, em caso de seleção, somente poderão ingressar no curso se provarem, no momento da matrícula, terem obtido o seu grau, prova que pode ser feita por meio de diploma ou certidão de colação de grau. Datas: Veja anexo f) Critérios de seleção dos candidatos O processo de seleção dos candidatos será feito pelo Colegiado Acadêmico através da análise de: • Histórico escolar; • Curriculum Vitæ do candidato; • Dados e informações obtidos pela coordenação através de entrevista, quando necessário. Na análise curricular serão observados as titulações, a participação em cursos e congressos, o conhecimento de linguagens de programação, além da experiência profissional anterior do candidato nas áreas de programação e desenvolvimento de sistemas. g) Critérios de avaliação de rendimento dos alunos Conforme Art. 68, Res. 25/95 CEPE a freqüência a todas as atividades do curso será obrigatória, exigindo-se uma freqüência mínima de 85% (oitenta e cinco por cento). Conforme Art. 69, Res. 25/95 CEPE será considerado aprovado em cada disciplina o aluno que atender aos seguintes requisitos: I. obtiver pelo menos 75% (setenta e cinco por cento) de freqüência; II. obtiver nota igual ou superior a 6,0 (seis). Conforme Art. 70, Res. 25/95 CEPE será aprovado no Curso o aluno que, cumpridas as demais exigências, atender aos seguintes requisitos: I. obtiver aprovação em todas as disciplinas e atividades do currículo; II. obtiver nota igual ou superior a 7,0 (sete) no trabalho final. Ao final de cada disciplina, o aluno fará uma avaliação da mesma, incluindo a atuação do professor e os métodos didático-pedagógicos utilizados no seu desenvolvimento. Os resultados destas avaliações serão anexados ao relatório final do curso e ficarão à disposição dos interessados para consulta. A participação em um módulo do curso será condicionada ao fato de que o pagamento das mensalidades esteja em dia. A defesa do projeto final está condicionada à quitação de todas as mensalidades do curso. Ao aluno aprovado no curso será conferido um Certificado de Especialização que será expedido, após requerimento, pela Pró-Reitoria de Pesquisa e Pós-Graduação. h) Descrição do trabalho final do curso e data limite para entrega O trabalho final do curso consiste em um projeto final de desenvolvimento de um sistema de complexidade média, bem documentado. Deve englobar as técnicas expostas no curso, especificamente o conhecimento dos módulos. O trabalho final pode ser elaborado em grupos de até três alunos. A data limite para entrega do projeto final é de noventa dias após o último dia de aula, veja calendário do curso. IV. Currículo do curso contendo os nomes das disciplinas, docentes responsáveis, ementas e carga horária Ementas das disciplinas em anexo. Número 1 2 3 4 5 6 7 8 9 10 11 12 13 Sigla LIN J1 J2 ENG PER EV WEB OD IF EE1 EE2 ME1 ME2 Nome Introdução ao Sistema Operacional Linux Programação Básica Programação Avançada Engenharia de Software Orientada a Objetos Persistência de Dados Programação Orientada a Eventos JSP, Servlets e XML Objetos Distribuídos Interfaces (Java Server Faces) Java Enterprise Edition (Java EE) I Java Enterprise Edition (Java EE) II Java 2 Micro Edition I (J2ME) Java 2 Micro Edition II (J2ME) Total Carga Horária 20 30 30 30 30 30 40 30 30 30 30 30 30 390 Duração Dias de Aula 4 6 6 6 6 6 8 6 6 6 6 6 6 78 Docente Mariella Berger Flávio Miguel Varejão Flávio Miguel Varejão Giancarlo Guizzardi Elton Siqueira Moura Elton Siqueira Moura Sérgio Antônio Andrade de Freitas João Paulo Almeida Sérgio Antônio Andrade de Freitas Vítor Estêvão Silva Souza Vítor Estêvão Silva Souza Idilio Drago Idilio Drago V. Quadro resumo do corpo docente, contendo a titulação, instituição e ano da obtenção do título, instituição/empresa onde trabalha e disciplina a ser ministrada Núme ro Sigla 1 ESM 2 FMV 3 4 GG ID Giancarlo Guizzardi Idilio Drago D.Sc. Mestre 5 6 JPA MB 7 SAF 8 VS João Paulo Almeida Mariella Berger Sérgio Antônio Andrade de Freitas Vítor Estêvão Silva Souza Nome Elton Siqueira Moura Flávio Miguel Varejão Instituição e Ano da Obtenção do Título Instituição/Empresa onde trabalha Disciplina(s) Ministrada(s) CEFET-ES PER, EV http://lattes.cnpq.br/7923759097083335 UFES, CT, DI J2 http://lattes.cnpq.br/6501574961643171 UFES, CT, DI UFES, CT, DI ENG ME1, ME2 http://lattes.cnpq.br/5297252436860003 http://lattes.cnpq.br/5203231841899014 D.Sc. Mestre UFES, DI, 1999 PUC/RJ, Rio de Janeiro, Brasil, 1999 Twente University of Technology, Holanda, 2005 UFES, DI, 2005 Twente University of Technology, Holanda, 2006 UFES, DI, 2005 UFES, CT, DI UFES, CT, DI OD LIN http://lattes.cnpq.br/4332944687727598 http://lattes.cnpq.br/3929645439848570 D.Sc. UFES, DEE, 2003 UFES, CT, DI WEB, IF http://lattes.cnpq.br/0395549254894676 Mestre UFES, DI, 2000 UFES, CT, DI EE1, EE2 http://lattes.cnpq.br/2762374760685577 Titulação Mestre D.Sc. CV Lattes Res. 25/95 CEPE, Art. 73. § 2º: O número de docentes sem título mínimo de Mestre não poderá ultrapassar 1/3 (um terço = 33.3%) do corpo docente. 8 , Percentagem: 100,0% Número de docentes sem título mínimo de Mestre neste curso: Absoluto: VI. Previsão de receitas e despesas 40,00 . O valor da inscrição é de R$ 8400,00 560,00 . a ser pago em O valor total do curso é de R$ 15 parcelas de R$ As parcelas deverão ser pagas mensalmente, pela forma imposta pela Universidade Federal do Espírito Santo, com o apoio administrado da Fundação de Apoio. ANEXO I: Currículo dos docentes que não possuem título de mestre ANEXO II: Termos de concordância assinados pelos docentes do curso, conforme prevê o artigo 73 1. Docentes pertencentes a UFES, conforme Anexo I da Resolução nº 31/2001 – CEPE a. Flávio Miguel Varejão b. Giancarlo Guizzardi c. João Paulo Almeida d. Sérgio Antônio Andrade de Freitas e. Vítor Estêvão Silva Souza f. Mariella Berger 2. Docentes não pertencentes a UFES, conforme Anexo II da Resolução nº 31/2001 – CEPE a. Elton Siqueira Moura b. Idilio Drago ANEXO III: Cópia dos diplomas/certificados dos docentes não pertencentes à UFES 1. Elton Siqueira Moura 2. Idilio Drago ANEXO IV: Aprovação justificada do Colegiado Acadêmico proponente do curso da participação de docentes sem o título mínimo de mestre ANEXO V: Calendário do Curso CALENDÁRIO DO CURSO (modificações possíveis) Intervalo da aula Número de anterior em dias dia de aula de semana Data 1 0 2 0 3 7 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 14 12 0 13 0 14 0 15 0 16 0 17 14 18 0 19 0 20 0 21 0 22 0 23 0 24 0 25 0 26 0 27 0 28 0 29 7 30 0 31 0 32 0 33 0 34 0 35 14 36 0 37 0 38 0 39 7 40 0 41 7 42 0 24 abril, 2009 25 abril, 2009 8 maio, 2009 9 maio, 2009 15 maio, 2009 16 maio, 2009 22 maio, 2009 23 maio, 2009 29 maio, 2009 30 maio, 2009 19 junho, 2009 20 junho, 2009 26 junho, 2009 27 junho, 2009 3 julho, 2009 4 julho, 2009 24 julho, 2009 25 julho, 2009 31 julho, 2009 1 agosto, 2009 7 agosto, 2009 8 agosto, 2009 14 agosto, 2009 15 agosto, 2009 21 agosto, 2009 22 agosto, 2009 28 agosto, 2009 29 agosto, 2009 11 setembro, 2009 12 setembro, 2009 18 setembro, 2009 19 setembro, 2009 25 setembro, 2009 26 setembro, 2009 16 outubro, 2009 17 outubro, 2009 23 outubro, 2009 24 outubro, 2009 6 novembro, 2009 7 novembro, 2009 20 novembro, 2009 21 novembro, 2009 Dia da Semana Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Número Módulo 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 4 5 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7 7 Sigla Módulo LIN LIN LIN LIN J1 J1 J1 J1 J1 J1 J2 J2 J2 J2 J2 J2 ENG ENG ENG ENG ENG ENG PER PER PER PER PER PER EV EV EV EV EV EV WEB WEB WEB WEB WEB WEB WEB WEB Sigla Docente MB MB MB MB FMV FMV FMV FMV FMV FMV FMV FMV FMV FMV FMV FMV GG GG GG GG GG GG ESM ESM ESM ESM ESM ESM ESM ESM ESM ESM ESM ESM SAF SAF SAF SAF SAF SAF SAF SAF Intervalo da aula Número de anterior em dias dia de aula de semana Data 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 7 0 0 0 0 0 35 0 0 0 14 0 14 0 0 0 7 0 0 0 0 0 7 0 7 0 0 0 7 0 0 0 0 0 0 0 Dia da Semana 4 5 11 12 18 19 dezembro, 2009 dezembro, 2009 dezembro, 2009 dezembro, 2009 dezembro, 2009 dezembro, 2009 29 janeiro, 2010 30 janeiro, 2010 5 fevereiro, 2010 6 fevereiro, 2010 26 fevereiro, 2010 27 fevereiro, 2010 19 março, 2010 20 março, 2010 26 março, 2010 27 março, 2010 9 abril, 2010 10 abril, 2010 16 abril, 2010 17 abril, 2010 23 abril, 2010 24 abril, 2010 7 maio, 2010 8 maio, 2010 21 maio, 2010 22 maio, 2010 28 maio, 2010 29 maio, 2010 11 junho, 2010 12 junho, 2010 18 junho, 2010 19 junho, 2010 25 junho, 2010 26 junho, 2010 2 julho, 2010 3 julho, 2010 Número de dias de aula Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado Sexta-feira Sábado 78 Número Módulo Sigla Módulo Sigla Docente 8 8 8 8 8 8 9 9 9 9 9 9 10 10 10 10 10 10 11 11 11 11 11 11 12 12 12 12 12 12 13 13 13 13 13 13 OD OD OD OD OD OD IF IF IF IF IF IF EE1 EE1 EE1 EE1 EE1 EE1 EE2 EE2 EE2 EE2 EE2 EE2 ME1 ME1 ME1 ME1 ME1 ME1 ME2 ME2 ME2 ME2 ME2 ME2 JPA JPA JPA JPA JPA JPA SAF SAF SAF SAF SAF SAF VS VS VS VS VS VS VS VS VS VS VS VS ID ID ID ID ID ID ID ID ID ID ID ID ANEXO VI: Ementa das Disciplinas do Curso Introdução ao Sistema Operacional Linux 1. Introdução Objetivos Motivações Conceitos: UNIX, Linux, Software Livre 2. Primeiros Passos Instalação Tipos de Instalação Particionamento Gerenciadores de partida: GRUB e LILO Organização do sistema de arquivos Configurações 3. Sessões de Usuários Como acessar o sistema Linux O processo de login Organização dos usuários Saindo do Sistema 4. Explicações Básicas Arquivos Diretórios Diretório Raiz Diretório home Caminho na Estrutura de diretórios Comandos Prompt (Aviso de comando) Terminal Virtual 5. Discos e Partições Partições Pontos de Montagem Identificação de discos e partições em sistemas Linux Montando (acessando) uma partição de disco fstab Desmontando uma partição de disco Exercícios 6. Execução de Programas Executando um comando/programa Path Executando programas em seqüência Comandos Interrompendo a execução de um processo Exercícios 7. Comandos Comandos para manipulação de arquivos Comandos para manipulação de diretórios Comandos para compactação e descompactação Outros comandos Exercícios 6. Ambiente de Trabalho (Shell) bash, csh Interpretação de comandos Exercícios 7. Acesso a periféricos Acesso a cd-roms, disquetes, pen-drivers, entre outros Exercícios 8. Processos Conceitos Comandos Controle de Execução Exercícios 9. Permissões de acessos a arquivos e diretórios Donos Grupos Usuários Tipos de permissões de acesso A conta root Comandos Exercícios 10. Redirecionamentos e Pipe 11. Ambientes Gráficos Xwindows KDE, GNOME Área de Trabalho Centro de Controle 12. Editores de texto Vi Emacs Kwrite Gedit Anjuta Exercícios 13. Acesso Remoto SSH SFTP SCP 14. Programação Utilitátio MAKE Referências bibliográficas: 1. Gleydson Mazioli da Silva, Guia Foca GNU/Linux - Nível Iniciante-Intermediário, 2003. 2. Arnold Robbins, Unix in a Nutshell: System V Edition, O'Reilly,1999. 3. Jerry Peek, Grace Todino & John Strang, Learning the Unix Operating System, O'Reilly,1998. 4. Ellen Siever, Stephen Spainhour, Stephen Figgins and Jessica P. Hekman, in a Nutshell, 3rd Edition, O'Reilly, 2000. Programação Básica 1. Introdução Objetivos Recursos adicionais Conceitos da JVM Exercícios 2. Programação Orientada a Objetos Objetivos Relevância O que é a programação orientada a objetos Declarando classes Java Declarando atributos Declarando métodos Acessando os membros dos objetos Escondendo informações Encapsulamento Construtores O construtor default Layout do arquivo fonte Pacotes de software A declaração Package A declaração Import Uso da documentação das APIs Java Exercícios 3. Identificadores, Palavras chaves e tipos Objetivos Comentários Ponto e vírgula, blocos e espaços em branco Identificadores Palavras chave da linguagem Java Tipos básicos (primitivos) Variáveis, declarações e atribuições Tipos (variáveis) referência Construção e inicialização de objetos Atribuição dos tipos referência Passagem por valor A referência this Convenções de codificação Exercícios 4. Fluxo de controle e expressões Objetivos Expressões Declarações de blocos Declarações de laço Controle especial de fluxo de laço Exercícios 5. Arrays Objetivos Declaração Criação Inicialização Arrays Multidimensionais Redimensionamento de Arrays Cópia de Arrays Exercícios 6. Reuso de Classes Objetivos Herança Polimorfismo O relacionamento “possui” Controle de acesso Sobrecarga (overloading) de métodos Sobrecarga de construtores Invocação de métodos sobrescritos (overridden) Invocação de construtores na classe pai Recapitulação de criação e inicialização de objetos A classe Object O operador == comparado ao método equals O método toString Classes Wrapper Exercícios Referências bibliográficas: 1. HORSTMANN, Cay S., CORNELL, Gary. Core Java™ 2 Volume 1 --Fundamentals. 5st ed. California, EUA: Sun Microsystems Press, 2002. 2. Deitel, H. M.; Deitel, P. J. Java How to Program. 4rd Edition. Prentice-Hall, 2002, ISBN: 0-13-0341517 3. ECKEL, Bruce. Thinking in Java. 4th ed. Prentice-Hall, 2006. [ Disponível em: http://www.mindview.net/Books ] 4. LEMAY, Laura, CADENHEAD, Rogers. Aprenda em 21 Dias Java 2 - Professional Reference. Tradução: João E. N. Tortello. Rio de Janeiro, Brasil: Editora Campus Ltda., 2001. 5. GOSLING, Jay, e Steele. The Java Language Specification. 3rd ed. Addison-Wesley. 2005 [ Disponível em: http://java.sun.com/docs/books/jls ] Programação Avançada 1. Introdução Objetivos Recursos adicionais 2.Identificação Dinâmica de Tipos, Interfaces e Herança Múltipla RTTI Interfaces Herança Múltipla em Java --- Combinação de Interfaces e a Colisão de Nomes Estendendo uma Interface com Herança Inicializando os Atributos de Uma Interface A Interface Comparable 3. Classes Internas Classes Internas Classes Internas e Upcasting Classes Internas a Métodos e Escopos Classes Internas Anônimas 4. Exceções Exceções Propagação de Exceções Hierarquia de Classes de Exceções Relançamento de Exceções Exceções Especiais Criação de Exceções A Cláusula finally 5. Classes Genéricas Java Generics Definição de classes genéricas Subtipos Wildcards Métodos Genéricos Casts e instanceof 6. Classes Utilitárias A classe Math A classe String A classe StringBuffer As APIs Collection A ferramenta Javadoc Desatualização (Deprecation) A ferramenta Jar 7. Streams, Arquivos e Serialização Objetivos Fundamentos de I/O Fluxo de bytes Fluxo de caracteres Processando Streams Classes básicas de fluxo de bytes Classes básicas de fluxo de caracteres Lendo e escrevendo um fluxo de objetos Arquivos e I/O de arquivos Serialização Referências bibliográficas 1. HORSTMANN, Cay S., CORNELL, Gary. Core Java™ 2 Volume 1 --Fundamentals. 5st ed. California, EUA: Sun Microsystems Press, 2002. 2. JENKINS, Michael S. Abstract Data Types in Java. Vol. I. New York, EUA: McGraw-Hill Companies, Inc., 1997. 3. ECKEL, Bruce. Thinking in Java. 4th ed. Prentice-Hall, 2006. [ Disponível em: http://www.mindview.net/Books ] 4. LEMAY, Laura, CADENHEAD, Rogers. Aprenda em 21 Dias Java 2 - Professional Reference. Tradução: João E. N. Tortello. Rio de Janeiro, Brasil: Editora Campus Ltda., 2001. 5. GOSLING, Jay, e Steele. The Java Language Specification. 3rd ed. Addison-Wesley. 2005 [ Disponível em: http://java.sun.com/docs/books/jls ] Engenharia de Software Orientada a Objetos 1. Introdução Conceitos Básicos Conceitos Avançados 2. Processo de Desenvolvimento Orientado a Objetos O Processo Unificado 3. Levantamento de Requisitos Modelagem de Casos de Uso Diagrama de Casos de Uso Descrição de Casos de Uso 4. Análise Orientada a Objetos Modelagem de Classes: Elaboração de Diagramas de Classes e Pacotes Determinação do Comportamento: Elaboração de Diagramas de Seqüência e Estados Definição das Operações 5. Projeto Orientado a Objetos Projeto Arquitetural Projeto do Domínio do Problema Projeto de Interface com o Usuário Projeto de Gerência de Tarefas Projeto de Gerência de Dados Projeto de Objetos 6. Considerações sobre Implementação e Testes Referências Bibliográficas 1. S. Ambler, Análise e Projeto Orientados a Objetos – Volume2, IBPI Press, 1998. 2. G. Booch, Object-Oriented Analysis and Design with Applications, 2nd edition, Benjamin/Cummings Publishing Company, Inc, 1994. 3. G. Booch, J. Rumbaugh, I. Jacobson, UML – Guia do Usuário, Editora Campus, 2000. 4. M. Fowler, K. Scott, UML Distilled: Applying the Standard Object Modeling Language, AddisonWesley Object Technology Series, 1997. 5. J.D. Furlan, Modelagem de Objetos Através da UML, Makron Books, 1998. 6. I. Jacobson, Object-Oriented Software Engineering, Addison-Wesley, 1992. 7. I. Jacobson, G. Booch, J. Rumbaugh, The Unified Software Development Process, Addison-Wesley Object Technology Series, 1998. 8. P. Kruchten, The Rational Unified Process: An Introduction, Object Technology Series, AddisonWesley, 1998. 9. C. Larman, Utilizando UML e Padrões: Uma introdução à análise e ao projeto orientados a objetos, Bookman, 2000 10. R. Magela, Produzindo Software Orientado a Objetos: Projeto, Fuzion Engenharia de Software LTDA, 1998. 11. B. Meyer, Object-Oriented Software Construction, 2nd Edition, Prentice Hall, 1997. 12. R.S. Pressman, Software Engineering: A Practitioner’s Approach, 4th Edition, Mc Graw Hill, 1997. 13.J. Rumbaugh, et alli, Modelagem e Projetos Baseados em Objetos, Editora Campus, 1994. 14. E. Yourdon, Object-Oriented Systems Design: an Integrated Approach, Yourdon Press Computing Series, Prentice Hall, 1994. Persistência de Dados 1. Introdução Conceitos Básicos Conceitos Avançados 2. Bancos de Dados Relacionais e a Linguagem SQL Bancos de Dados Relacionais Linguagem SQL Introdução 3. Acesso a Bancos de Dados Relacionais usando JDBC Driver Tipos de Drivers Driver específico carregado sem Gerenciador de Drivers (DriverManager) Carregando Driver dinamicamente e registrando com Gerenciador de Drivers (DriverManager) Conexão Instruções SQL (Statements) Retorno do Comando SQL e a classe ResultSet Execução de Statements Navegação pelo ResultSet Tipos Java e Tipos SQL Extração de atributos de uma linha do ResultSet Contagem de objetos Exemplo Instruções Preparadas (Prepared Statements) Procedimentos Armazenados (Stored Procedures) Processamento em Lote Meta-Dados 4. Java Enterprise Classes de Persistência Envoltórias de JDBC Classes de Persistência, Primeira versão Geração de Identificadores Únicos de Objetos (IDO) para Objetos Persistentes JNDI – Java Naming and Directory Interface Servidor JNDI Pool de Conexões Referências Bibliográficas 1. E. F. Codd, A Relational Model of Data for Large Shared Data Banks, Communications of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387. 2. D. Flanagan, J. Farley, W. Crawford, K. Magnusson, Java Enterprise in a Nutshell, O'Reilly, 1999 3. Jon Ellis & Linda Ho, JDBC™ 3.0 Specification Final Rel., Sun Microsystems, Inc., 2001 4. R. Monson-Haefel, Enterprise JavaBeans -3rd Edition, O'Reilly, 2001 5. G. Reese, Database Programming With JDBC and Java 2nd Ed, O´Reilly, 2000 6. G. Reese, Programação para banco de dados JDBC e Java 2nd Ed, O´Reilly, Berkeley, 2001 7. Todd M. Thomas, Hungry Minds - Java Data Access - JDBC, JNDI, and JAXP, 2002 8. E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns, , Addison-Wesley, 1994 9. Tutorial JDBC. [ http://java.sun.com/docs/books/tutorial/jdbc ] Programação Orientada a Eventos 1. Modelo de eventos GUI Objetivos O que é um evento? Modelo de eventos do Java 2 SDK Comportamento das GUIs Adaptadores de Eventos Manipuladores de eventos utilizando classes interiores Manipuladores de eventos utilizando classes anônimas 2. Construção de GUI Java Objetivos Swing Construindo interfaces gráficas do usuário Frames Painéis Layout de containers Gerentes de Layout Criando painéis e layouts complexos Desenhando em Swing Construindo interfaces gráficas com o usuário com uso de IDEs 3. Introdução aos Applets Java Objetivos O que é um applet? Escrevendo um applet Métodos e o ciclo de vida de um applet Apresentação de applet Características adicionais dos applets Mouse input Exercícios 4. Threads Objetivos Controle básico das Threads Outras maneiras de criar Threads Uso do synchronized em Java Interação de Thread – wait e notify Exercícios 5. Reflection e Java Beans Objetivos Obtenção Dinâmica de Informações sobre Classes Beans e Programação Visual Introspecção Beans e Pacotes Exercícios Referências bibliográficas: 1. HORSTMANN, Cay S., CORNELL, Gary. Core Java™ 2 Volume 1 --Fundamentals. 5st ed. California, EUA: Sun Microsystems Press, 2002. 2. JENKINS, Michael S. Abstract Data Types in Java. Vol. I. New York, EUA: McGraw-Hill Companies, Inc., 1997. 3. ECKEL, Bruce. Thinking in Java. 4th ed. Prentice-Hall, 2006. [ Disponível em: http://www.mindview.net/Books ] 4. LEMAY, Laura, CADENHEAD, Rogers. Aprenda em 21 Dias Java 2 - Professional Reference. Tradução: João E. N. Tortello. Rio de Janeiro, Brasil: Editora Campus Ltda., 2001. 5. GOSLING, Jay, e Steele. The Java Language Specification. 3rd ed. Addison-Wesley. 2005 [ Disponível em: http://java.sun.com/docs/books/jls ] JSP, Servlets e XML 1. Networking Objetivos Conceitos Servidor TCP/IP Cliente TCP/IP Exercícios 2. Sockets Objetivos Comunicação Através de Socket URLs Exercícios 3. HTML Linguagens de Marcação Comandos Básicos Uso em Java Exercícios 4. Servlets Estrutura Básica Servlets e Multi-threading Sessões Exemplos Exercícios 5. JSP Objetos Implícitos Diretivas JSP Scripting em JSP Sessões Cookies Exercícios 6. XML Objetivos Noções de JSP Diretivas XML e Java Exercícios Referências bibliográficas 1. Rossbach, P., Schreiber, H. Java Server and Servlets: building portable Web applications. AddisonWesley, February 2000, ISBN: 0201674912. 2. Hunter, J., and Crawford, W., Java Servlet Programming, 2nd Edition, O'Reilly, 2001 3. Hunter, J., and Crawford, W., Java Servlet: Programação, Ciência Moderna, 2002 4. McLaughlin, B., Java & XML, 2nd Edition, Solutions to Real-World Problems, O'Reilly, 2001 Objetos Distribuídos 1 Características de Sistemas Distribuídos Vantagens dos sistemas distribuídos sobre os centralizados Desafios dos sistemas distribuídos 2. Aspectos de um sistema distribuído Transparência Interoperabilidade e Portabilidade Flexibilidade Confiabilidade Desempenho (performance) Escalabilidade 3. Objetos distribuídos em uma perspectiva CORBA Conhecendo a arquitetura CORBA Conhecendo a linguagem de definição de interfaces (IDL) Definição de Objetos CORBA Acessando Objetos CORBA (Definição de Clientes CORBA) Acessando Objetos CORBA (Definição de Clientes CORBA) Exposição Pública de Objetos CORBA (por arquivos, http e pelo serviços de nomes) Invocação Dinâmica (DII) 4. Objetos distribuídos em uma perspectiva Java Remote Method Invocation (RMI) Definição de Objetos Remotos Acessando Objetos Remotos (Definição de Clientes) Exposição Pública de Objetos Remotos (RMI Registry) Classes Dinamicamente Carregadas Ativação de Objetos Remotos RMI e Chamadas Nativas RMI sobre IIOP 5. Exercícios Referências bibliográficas 1. BROSE, Gerald, VOGEL, Andreas, DUDDY, Keith. JAVA Programming with CORBA: Advanced Techniques for Building Distributed Applications. 3rd ed. New York, EUA : John Wiley & Sons, Inc. 2001. 2. Java RMI Tutorial, http://java.sun.com/docs/books/tutorial/rmi/index.html Interfaces 1. Introdução 2. Conceitos de interfaces em Java 3. Estudo de casos: Struts 4. JavaServer Faces (JSF) 5. XMLC e Applets 6. Interfaces Gráficas 7. Conclusão Referências bibliográficas: David Geary & Cay S. Horstmann. Core Java Server Faces. Sun Microsystems Press, 2004. David H. Young. Enhydra XMLC Java Presentation Development. Sams, 2002. K. C. Hopson, Stephen E. Ingram. Developing Professional Java Applets. Sams 1996. James Holmes. Struts: The Complete Reference, 2nd Ed. McGraw-Hill, 2006 HORSTMANN, Cay S., CORNELL, Gary. Core Java™ 2 Volume 1 --Fundamentals. 5st ed. California, EUA: Sun Microsystems Press, 2002. Java Enterprise Edition (Java EE) – MÓDULO I 1. Visão Geral 1.1 – Introdução 1.2 – Aplicações distribuídas 1.3 – Java EE: um conjunto de tecnologias (JDBC, JNDI, JMS, JTA, JavaMail, JAAS, JAXP, JAF, Java IDL) 1.4 – A tecnologia Enterprise JavaBeans 2. Enterprise JavaBeans, versão 2.1 2.1 – Histórico da tecnologia EJB 2.2 – Como era construído um EJB na versão 2.1 2.3 – Vantagens e desvantagens do modelo e 2.4 – Evolução para versão 3.0 3. Enterprise JavaBeans versão 3.0 3.1 – Introdução 3.2 – API Simplificada 3.3 – Anotações 4. Beans de Sessão 4.1 – Introdução 4.2 – Características gerais 4.3 – Beans de Sessão com e sem estado 4.4 – Implementação e implantação 4.5 – Integração de Beans: JNDI e injeção de dependências 4.6 – Escrevendo Web Services com EJBs de Sessão Referências bibliográficas: 1. Rima Patel Sriganesh, Gerald Brose, Micah Silverman, Mastering Enterprise JavaBeans 3.0, Wiley, 2006. 2. Bill Burke, Richard Monson-Haefel, Enterprise JavaBeans 3.0, 5th Edition, O'Reilly Media, 2006. 3. Debu Panda, Reza Rahman, Derek Lane, EJB 3 in Action, Manning Publications, 2007. 4. Michael Juntao Yuan, Lightweight Java Web Application Development: Leveraging EJB 3.0, JSF, POJO, and Seam, Prentice Hall, 2007. 5. Deepak Alur, Dan Malks, John Crupi, Core J2EE Patterns: Best Practices and Design Strategies, 2nd Edition, Prentice Hall, 2003. Java Enterprise Edition (Java EE) – MÓDULO II 1. Beans de Entidade 1.1 – Introdução 1.2 – Mapeamento objeto/relacional 1.3 – O gerenciador da persistência 1.4 – Implementação e implantação 2. Beans Dirigidos por Mensagens 2.1 – Introdução 2.2 – A tecnologia Java Messaging Services 2.3 – Implementação e implantação 3. Conceitos Avançados 3.1 – Conceitos avançados de persistência 3.2 – Conceitos avançados de Messaging 3.3 – Segurança 3.4 – Boas práticas e padrões de projeto 4. Integração com o framework Seam Referências bibliográficas: 1. Rima Patel Sriganesh, Gerald Brose, Micah Silverman, Mastering Enterprise JavaBeans 3.0, Wiley, 2006. 2. Bill Burke, Richard Monson-Haefel, Enterprise JavaBeans 3.0, 5th Edition, O'Reilly Media, 2006. 3. Debu Panda, Reza Rahman, Derek Lane, EJB 3 in Action, Manning Publications, 2007. 4. Michael Juntao Yuan, Lightweight Java Web Application Development: Leveraging EJB 3.0, JSF, POJO, and Seam, Prentice Hall, 2007. 5. Deepak Alur, Dan Malks, John Crupi, Core J2EE Patterns: Best Practices and Design Strategies, 2nd Edition, Prentice Hall, 2003. Java 2 Micro Edition (J2ME) – MÓDULO I PARTE I: Desenvolvimento com J2ME 1. Introdução O quê é J2ME O quê é um Dispositivo Compacto O papel de J2ME em aplicação "wireless" e móveis A trilogia da Edição Java 2 Advogando Java Origem de J2ME Comunidade J2ME Produtos J2ME 2. Arquitetura J2ME Objetivos Acomodando necessidades opostas Configurações Perfis Escolhendo em Perfil J2ME Portabilidade Ambiente de Execução Desenhando Aplicações J2ME 3. Desenvolvendo uma Aplicação J2ME Levantamento de Requisitos de uma aplicação de exemplo Análise de uma aplicação de exemplo Implementação Roteiro da aplicação PARTE II: Desenvolvimento para telefones celulares e Pager 4. Uma aplicação Simples de MIDP (Mobile Information Device Profile) O ambiente de desenvolvimento Desenvolvendo aplicações MIDP 5. A interface com o usuário MIDP Protocolo de Aplicação Aplicação de Exemplo Dois tipos de interface com o usuário e tratamento de eventos A "Application Programming Interface" (API) de MIDP Tratando Interações com o usuário MIDlets em outros dispositivos 6. Armazenamento de Dados em MIDP JDBC em paralelo Estrutura de Armazenamento API de RMS Persistência na Aplicação de Exemplo 7. Conectando à Internet Conectividade do pacote Micro Edition Pacote semelhante, porém mais compacto Implementação da Aplicação de Exemplo Referências bibliográficas 1. James White, David Hemphill, Java 2 Micro Edition, MANNING, Greenwich, 2002. 2. Roger Riggs, Antero Taivalsaari, Mark VandenBrink, Programming Wireless Devices with the Java(TM) 2 Platform (Micro Edition), Addison-Wesley 1st edition, 2001 3. John W. Muchow, Core J2ME Technology and MIDP, Prentice Hall PTR; 1st edition, 2001 4. Kim Topley, J2ME in a Nutshell, O'Reilly, 1st edition, 2002 5. Qusay Mahmoud, Wireless Java Help for New J2ME Developers, O'Reilly, 1st edition, 2002 Java 2 Micro Edition (J2ME) – MÓDULO II PARTE III: Desenvolvimento para PDA (Personal Digital Assistant) 8. J2ME em um PDA e Introdução a KJava Alternativas de Perfis PDA "HiSmallWorld" em KJava Implantação no dispositivo "HiSmallWorld" revisto usando MIDP para Palm OS 9. Interface com o Usuário em KJava Controle de Aplicação em KJava Aplicação de Exemplo em KJava Tratamento de interações com o usuário Tratamento de eventos na Aplicação de Exemplo 10. Armazenamento de Dados em KJava Banco de Dados em Palm OS A API de KJava para Banco de Dados A implementação da Persistência na Aplicação de Exmplo em KJava Revisão da Conexão com a Internet Acessando Banco de Dados de Aplicações em Palm OS PARTE IV: Desenvolvendo para Computação Empresarial: Além da Especificação 11. Implementação em Ambientes Reais Pensando no Usuário Um cenário de desenvolvimento Guia de desenvolvimento de aplicações J2ME Ferramentas e técnicas 12. Integração do Servidor Examinando a integração do Servidor A tecnologia de conexão Exemplo usando Servlets XML Exemplo com XML usando JSP 13. A conexão com a Rede Esboço Geral de Conexão Conexões baseadas em HTTP Conexões baseadas em Sockets Conexões baseadas em Datagramas 14. Ambiente de Execução J2ME Ambiente de Execução Java Ambiente de Execução J2ME Máquinas Virtuais Compatíveis com CLDC (KVM) Máquinas Virtuais Compatível com CDC (CVM) 15. Tecnologias Relacionadas Implementações J2ME Outras especificação da SUN Alternativas Não-J2ME Tecnologias de Java Relacionadas Sincronização e Armazenamento de Dados Tecnologias de Suporte para J2ME Referências bibliográficas 1. James White, David Hemphill, Java 2 Micro Edition, MANNING, Greenwich, 2002. 2. Roger Riggs, Antero Taivalsaari, Mark VandenBrink, Programming Wireless Devices with the Java(TM) 2 Platform (Micro Edition), Addison-Wesley 1st edition, 2001 3. John W. Muchow, Core J2ME Technology and MIDP, Prentice Hall PTR; 1st edition, 2001 4. Kim Topley, J2ME in a Nutshell, O'Reilly, 1st edition, 2002 5. Qusay Mahmoud, Wireless Java Help for New J2ME Developers, O'Reilly, 1st edition, 2002 ANEXOS do Art. 9º, § 2º, Res. 24/2008 CONSUNI I. extrato de ata de aprovação pelo Conselho Departamental do Centro proponente; A SER ANEXADO PELO CONSELHO DEPARTAMENTAL DO CENTRO TECNOLÓGICO II. especificação do objeto a ser executado, com a previsão do início e fim da execução do objeto; VEJA PROPOSTA DO PROJETO III. detalhamento das metas, com previsão das várias etapas ou fases de execução; VEJA PROPOSTA DO PROJETO IV. cronograma de desembolso; V. orçamento programa de despesas e receitas, conforme Modelo de Planilha de Receitas e Despesas do Anexo desta Resolução; VEJA PROPOSTA DO PROJETO VI. justificativa para escolha da fundação de apoio; VII. detalhamento dos custos operacionais desta fundação de apoio; VIII. manifestação por parte do DCF da Universidade Federal do Espírito Santo quanto à existência de dotação orçamentária, observando o manual elaborado pelo Departamento de Contratos e Convênios da UFES. A SER ANEXADO PELO DCF ANEXO do Art. 9º, § 2º, Res. 24/2008 CONSUNI: IV. cronograma de desembolso Despesas Totais 339700,00 Duração em meses 15 Origem dos Recursos UFES Mês/Ano abril maio junho julho agosto setembro outubro novembro dezembro janeiro fevereiro março abril maio junho Total 2009 2009 2009 2009 2009 2009 2009 2009 2009 2010 2010 2010 2010 2010 2010 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 339700,00 PARTÍCIPE 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 Total 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 22646,67 339700,00 ANEXO do Art. 9º, § 2º, Res. 24/2008 CONSUNI: VI. justificativa para escolha da fundação de apoio Apresentamos a seguir as razões pelas quais definimos a Fundação Espírito Santense de Tecnologia – FEST, como a Fundação de Apoio para execução dos serviços de gerenciamento dos recursos relativos ao curso de especialização lato sensu “2° Curso de Java – Tecnologias e Desenvolvimento de Sistemas”: 1- A FEST é uma instituição idônea, localizada dentro do Campus da UFES, em Goiabeiras, sendo de fácil acesso e apresentando boa disponibilidade de atendimento; 2- A FEST tem à disposição para consultar toda a documentação necessária, atualizada, para que possa realizar convênios e contratos com instituições públicas, isto é, todas as certidões negativas de débito junto aos diversos órgãos de controle e fiscalização; 3- A FEST já vem gerenciando vários convênios/contratos da UFES com outras instituições, tendo demonstrado bom desempenho no mesmo; 4- A FEST oferta preços compatíveis com os valores de mercado, de instituição especializada no ramo, na Praça de Vitória (ES), para execução dos serviços; 5- A FEST encontra-se constituída nos termos da legislação brasileira; 6- É próprio da finalidade da FEST, apoiar as diversas atividades originadas da instituição federal de Ensino Superior, dando maior flexibilidade às ações estabelecidas entre a UFES e a comunidade interessada sem seus serviços, nos estritos termos previstos na Lei 8.958/94; 7- A FEST realiza compras, locações, contrata serviços e obras, para atender as necessidades dos projetos apoiados, realizando as licitações pertinentes, nas hipóteses previstas em lei. Diante do exposto, escolheu-se a FEST para ser responsável pela administração e aplicação dos recursos financeiros do curso acima referido, visando a melhor funcionalidade, praticidade do mesmo, e também, com a intenção de conservação do bem da União. ANEXO do Art. 9º, § 2º, Res. 24/2008 CONSUNI: VII. detalhamento dos custos operacionais desta fundação de apoio; A SER ANEXADO PELA COORDENAÇÂO APÓS SOLICITAÇÂO À FUNDAÇÂO DE APOIO ANEXOS do Manual para Contratos e Convênios da PróReitoria de Administração Departamento de Contratos e Convênios JUSTIFICATIVA DE INTERESSE INSTITUCIONAL A SER ANEXADO PELA PRÓ-REITORIA DE PESQUISA E PÓS-GRADUAÇÃO (PRPPG) JUSTIFICATIVA DE INTERESSE INSTITUCIONAL (MODELO) JUSTIFICATIVA DE INTERESSE INSTITUCIONAL Especificar a importância do projeto no âmbito da universidade. Por exemplo: Ressaltamos a importância do 2° CURSO DE JAVA - TECNOLOGIAS E DESENVOLVIMENTO DE SISTEMAS por ser o mesmo de grande relevância para a UFES, assegurando o aumento de desempenho da instituição no que diz respeito à oferta de vagas com a preservação da qualidade do ensino. O nível de qualidade mencionado pode ser aferido através de indicadores de desempenho qualitativos e quantitativos do MEC e da CAPES com relação aos cursos de Graduação, bem como através do conceito junto à sociedade de um modo geral. O aumento de desempenho pode também ser aferido através de outros indicadores, tais como o aumento da produção científica e tecnológica, do número de projetos de pesquisa, extensão e de transferência de tecnologia, bem como do número de eventos científicos organizados. (NOME) Pró-Reitor de Pesquisa e Pós-Graduação